linux免密登录系统
linux免密登录系统
我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 > root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。
密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。
1. 制作密钥对
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
2. 在服务器上安装公钥
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
#修改秘钥权限
chmod 600 authorized_keys
chmod 700 ~/.ssh
3. 设置 SSH,打开密钥登录功能
#编辑 /etc/ssh/sshd_config 文件,进行如下设置:
RSAAuthentication yes
PubkeyAuthentication yes
#另外,请留意 root 用户能否通过 SSH 登录:
PermitRootLogin yes
#当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:
PasswordAuthentication no
#最后,重启 SSH 服务:
systemctl restart sshd.service
4. 将私钥下载到客户端,然后转换为 PuTTY 能使用的格式
linux 免密登录
通过秘钥
#注意: ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件中
#简单版
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.10.211
#具体版
ssh-copy-id -u eucalyptus -i ~eucalyptus/.ssh/id_rsa.pub ssh 用户名字@192.168.x.xxx
通过密码
#注意 当第一次连接某台主机时,执行 sshpass 命令没有任何反应。
#如果确定首次连接的主机是安全的,可以对 sshpass 命令下的 ssh 添加选项:-o StrictHostKeychecking=no
#完整命令如下:
sshpass -p password ssh -o StrictHostKeychecking=no username@host
#实例1:直接远程连接某台主机:
sshpass -p xxx ssh root@192.168.11.11
sshpass -p xxx ssh root@192.168.11.11 'w' -o StrictHostChecking=no 免输入yes。
#实例:本地执行远程机器的命令:
sshpass -p xxx ssh root@192.168.11.11 "ethtool eth0"
#实例2:远程连接指定ssh的端口: (当远程主机不是默认的22端口时候)
sshpass -p 123456 ssh -p 1000 root@192.168.11.11
#实例3:从密码文件读取文件内容作为密码去远程连接主机
sshpass -f xxx.txt ssh root@192.168.11.11
#实例4:从远程主机上拉取文件到本地
sshpass -p '123456' scp root@host_ip:/home/test/t ./tmp/
#实例5:sshpass不可以直接接带特殊字符意义的密码,需要转义或者用小括号,或者指定文件的方式来连接都可以规避这个问题。
注意ubantu安装
apt-get update #安装前需要更新下库
apt-get install sshpass
参考文档:
Linux系统设置 SSH 通过密钥登录:https://www.cnblogs.com/Crazy-Liu/p/13098525.html
三种方法让你的SSH飞起来: http://blog.sina.com.cn/s/blog_698662d10102wx82.html
sshpass的使用方法: https://www.cnblogs.com/kaishirenshi/p/7921308.html
sshpass 使用:http://www.myexceptions.net/h/985005.html