ssh远程管理

SSH远程管理

 

ssh功能

SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全。那SSH服务主要功能有哪些呢?

1.提供远程连接服务器的服务

2.对传输的数据进行加密

 

Linux远程链接:ssh协议(加密) telnet(明文)

windows远程连接:RDP协议 (remote desktop)

 

协议端口
ssh 22
telnet 23
RDP 3389
http 80
https 443
FTP 20 21
POP3 110
MySQL 3306
Rsync 873
DNS 53

SSH相关命令

SSH有客户端与服务端,我们将这种模式称为C/S架构,ssh客户端支持Windows、Linux、Mac等平台。在ssh客户端中包含 ssh|slogin远程登陆、scp远程拷贝、sftp文件传输、ssh-copy-id秘钥分发等应用程序。

 

[root@m01 ~]# ssh root@10.0.0.41
ssh:客户端命令
root:系统用户名
@:分割用户和主机
10.0.0.41:主机的IP(可以是公网也可以是内网)
-p:指定端口

Xshell连接不上虚拟机

1.检查网络

#连谁ping谁
ping 10.0.0.41
tcping 10.0.0.41 22

2.检查端口

telnet 10.0.0.41 22
tcping 10.0.0.41 22

 

 

3.如果可以ping通,端口不通

#检测sshd服务是否启动
netstat -lntup|grep 22

#防火墙 selinux
systemctl stop firewalld
setenforce 0

 

scp命令

# -P 指定端口,默认22端口可不写
# -r 表示递归拷贝目录
# -p 表示在拷贝文件前后保持文件或目录属性不变
# -l 限制传输使用带宽(默认kb)

#推:将本地/tmp/oldboy推送至远端服务器10.0.0.61的/tmp目录,使用对端的root用户
[root@m01 ~]# scp -P22 -rp /tmp/oldboy oldboy@10.0.0.61:/tmp

#拉:将远程10.0.0.61服务器/tmp/oldboy文件拉取到本地/opt/目录下
[root@m01 ~]# scp -P22 -rp root@10.0.0.61:/tmp/oldboy /opt/

#限速
[root@m01 ~]# scp /opt/1.txt root@172.16.1.31:/tmp
root@172.16.1.31 password:
test                        100% 656MB  '83.9MB/s'   00:07
#限速为8096kb,换算为MB,要除以 8096/8=1024KB=1MB
[root@m01 ~]# scp -rp -l 8096 /opt/1.txt root@172.16.1.31:/tmp
root@172.16.1.31s password:
test                        7%   48MB   '1.0MB/s'   09:45

 

SSH验证方式

1.用户名密码

[root@m01 ~]# ssh root@10.0.0.41

 

2.密钥登陆方式

默认情况下,通过ssh客户端命令登陆远程服务器,需要提供远程系统上的帐号与密码,但为了降低密码泄露的机率和提高登陆的方便性,建议使用密钥验证方式。

 

 

 

1.管理机生成密钥对

[root@m01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:P6UswOccoZSLunZ0gekcQ/gDzhFNkH/+I1WHhtwQro8 root@m01
The key's randomart image is:
+---[RSA 2048]----+
| oB.   ..       |
|  = o o.       |
| o * oo.o+ .     |
| o O+o+o.= .   |
|   o.**.So ..   |
|   .+ oB.+ o     |
| .. .Eo= =     |
| ... . o. .     |
| ...   . .       |
+----[SHA256]-----+

[root@m01 ~]# ll .ssh/
total 8
-rw------- 1 root root 1679 Aug  8 19:07 id_rsa #私钥(宝塔镇河妖)
-rw-r--r-- 1 root root  390 Aug  8 19:07 id_rsa.pub #公钥(天王盖地虎)

 

2.管理机推送公钥

方式一(手动):
#在要连接的服务器上家目录下创建.ssh目录(用哪个用户连,就创建在哪个家目录下)
mkdir /root/.ssh
#授权700
chmod 700 /root.ssh
#在m01上查看公钥文件内容
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuxyeePaQr6cI6KMINgW7262dDdfgiiwspNjKYEoEj7cfjpMBPBCpqTO4H5+E8U/GcxsFcj2S2fHlRevPMa8vXYqOvX3O0Xp/C9zNMJrNdT+NdpCnDHRpsF4/Egr0xxKju7LPC1qz/Gu6ksx1VqUmcX2RKrQdV2BYi+pqu/2SQYOUUjKpen0zWxnhjuVmZMV+hPHgs4ILbGwwmYxqY+ldvP0guviQ2CeK1JtQIbP2Q5bBSlMwPxr4P303LUkIBsI3pHRoCMnDT0YI9x9JjdRkkUNjeFoTAE4APsTgICd6nzRBfRRf/VOYk5REuub367yxrOZpfNXOcJ6QCRLYQl6Xn root@m01

#创建公钥文件authorized_keys
vim ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuxyeePaQr6cI6KMINgW7262dDdfgiiwspNjKYEoEj7cfjpMBPBCpqTO4H5+E8U/GcxsFcj2S2fHlRevPMa8vXYqOvX3O0Xp/C9zNMJrNdT+NdpCnDHRpsF4/Egr0xxKju7LPC1qz/Gu6ksx1VqUmcX2RKrQdV2BYi+pqu/2SQYOUUjKpen0zWxnhjuVmZMV+hPHgs4ILbGwwmYxqY+ldvP0guviQ2CeK1JtQIbP2Q5bBSlMwPxr4P303LUkIBsI3pHRoCMnDT0YI9x9JjdRkkUNjeFoTAE4APsTgICd6nzRBfRRf/VOYk5REuub367yxrOZpfNXOcJ6QCRLYQl6Xn root@m01

#授权600
chmod 600 ~/.ssh/authorized_keys

 

方式二:
#使用命令推送公钥
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7

 

免交互expect[扩展]

1.安装expect

[root@m01 ~]# yum install -y expect

2.编写expect脚本

#!/usr/bin/expect
set ip 10.0.0.51
set pass 123456
set timeout 30
spawn ssh root@$ip
expect {
      "(yes/no)" {send "yes "; exp_continue}
      "password:" {send "$pass "}
}
expect "root@*" {send "df -h "}
expect "root@*" {send "exit "}
expect eof

免交互sshpass[扩展]

1.安装sshpass

[root@m01 ~]# yum install -y sshpass

2.使用sshpass命令

[root@m01 ~]# sshpass -p 123456 ssh root@10.0.0.51

[option]
-p:指定密码
-f:从文件中取密码
-e:从环境变量中取密码
-P:设置密码提示

 

原文地址:https://www.cnblogs.com/223zhp/p/11370519.html