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
结论:
1.scp通过ssh协议加密方式进行文件或目录拷贝。
2.scp连接时的用户作为为拷贝文件或目录的权限。
3.scp支持数据推送和拉取,每次都是全量拷贝,效率较低。
sftp远程数据传输命令
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 mkdir -m 700 ~/.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
优化
ssh作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。
1.更改远程连接登陆的端口
2.禁止root管理员直接登录
3.密码认证方式改为密钥认证
4.重要服务不使用公网ip地址
5.使用防火墙限制来源ip地址*
编辑配置文件
vim /etc/ssh/sshd-config ###ssh### #port 6666 #端口 #passwordauthentication no #密码 #permitrootlogin no #root gssapiauthentication no # usedns no ###end###
免交互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\r"; exp_continue} "password:" {send "$pass\r"} } expect "root@*" {send "df -h\r"} expect "root@*" {send "exit\r"} 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:设置密码提示
简易跳板机
#!/bin/bash if [ $1 == 'web01' -o $1 == '10.0.0.7' ];then ssh root@172.16.1.7 elif [ $1 == 'backup' -o $1 == '10.0.0.41' ];then ssh root@171.16.1.41 elif [ $1 == 'nfs' -o $1 == '10.0.0.31' ];then ssh root@172.16.1.31 elif [ $1 == 'm01' -o $1 == '10.0.0.61' ];then ssh root@172.16.1.61 -p 22 fi ~
小结
- 权限 1:禁止root用户登录时,普通用户权限700或者属主属组统一,
- 公钥,注意存放路径,普通用户家目录下,公钥文件授权600
上一篇: 胖纸真苦B
下一篇: webapi 导入excel处理数据