在CentOS / RHEL上设置 SSH 免密码登录的方法
作为系统管理员,你计划在Linux上使用OpenSSH,完成日常工作的自动化,比如文件传输、备份数据库转储文件到另一台服务器等。为实现该目标,你需要从主机A能自动登录到主机B。自动登录也就是说,要在shell脚本中使用ssh,而无需要输入任何密码。
本文会告诉你怎样在CentOS/RHEL上设置SSH免密码登录。自动登录配置好以后,你可以通过它使用SSH(SecureShell)和安全复制(SCP)来移动文件。
SSH是开源的,是用于远程登录的最为可靠的网络协议。系统管理员用它来执行命令,以及通过SCP协议在网络上向另一台电脑传输文件。
通过配置SSH免密码登录,你可以享受到如下的便利:
- 用脚本实现日常工作的自动化。
- 增强Linux服务器的安全性。这是防范虚拟专用服务器(VPS)遭受暴力破解攻击的一个推荐的方法,SSH密钥单凭暴力破解是几乎不可攻破的。
什么是ssh-keygen
ssh-keygen是一个用来生成、创建和管理SSH认证用的公私钥的工具。通过ssh-keygen命令,用户可以创建支持SSH1和SSH2两个协议的密钥。ssh-keygen为SSH1协议创建RSA密钥,SSH2则可以是RSA或DSA。
什么是ssh-copy-id
ssh-copy-id是用来将本地公钥拷贝到远程的authorized_keys文件的脚本命令,它还会将身份标识文件追加到远程机器的~/.ssh/authorized_keys文件中,并给远程主机的用户主目录适当的的权限。
SSH密钥
SSH密钥为登录Linux服务器提供了更好且安全的机制。运行ssh-keygen后,将会生成公私密钥对。你可以将公钥放置到任意服务器,从持有私钥的客户端连接到服务器的时,会用它来解锁。两者匹配时,系统无需密码就能解除锁定。
在CentOS和RHEL上设置免密码登录SSH
以下步骤在CentOS5/6/7、RHEL5/6/7和OracleLinux6/7上测试通过。
节点1:192.168.0.9节点2:192.168.l.10
步骤1:
测试节点1到节点2的连接和访问:
[root@node1~]#sshroot@192.168.0.10 Theauthenticityofhost'192.168.0.10(192.168.0.10)'can'tbeestablished. RSAkeyfingerprintis6d:8f:63:9b:3b:63:e1:72:b3:06:a4:e4:f4:37:21:42. Areyousureyouwanttocontinueconnecting(yes/no)?yes Warning:Permanentlyadded'192.168.0.10'(RSA)tothelistofknownhosts. root@192.168.0.10'spassword: Lastlogin:ThuDec1022:04:552015from192.168.0.1 [root@node2~]#
步骤二:
使用ssh-key-gen命令生成公钥和私钥,这里要注意的是可以对私钥进行加密保护以增强安全性。
[root@node1~]#ssh-keygen Generatingpublic/privatersakeypair. Enterfileinwhichtosavethekey(/root/.ssh/id_rsa): Enterpassphrase(emptyfornopassphrase): Entersamepassphraseagain: Youridentificationhasbeensavedin/root/.ssh/id_rsa. Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub. Thekeyfingerprintis: b4:51:7e:1e:52:61:cd:fb:b2:98:4b:ad:a1:8b:31:6droot@node1.ehowstuff.local Thekey'srandomartimageis: +--[RSA2048]----+ |.++| |ooo| |ooo.| |.o+..| |S..| |....| |oEoo.o| |=ooo.| |.o.o.| +-----------------+
步骤三:
用ssh-copy-id命令将公钥复制或上传到远程主机,并将身份标识文件追加到节点2的~/.ssh/authorized_keys中:
[root@node1~]#ssh-copy-id-i~/.ssh/id_rsa.pub192.168.0.10 root@192.168.0.10'spassword: Nowtryloggingintothemachine,with"ssh'192.168.0.10'",andcheckin: .ssh/authorized_keys tomakesurewehaven'taddedextrakeysthatyouweren'texpecting.
步骤四:
验证免密码SSH登录节点2:
[root@node1~]#sshroot@192.168.0.10 Lastlogin:SunDec1314:03:202015fromwww.ehowstuff.local
希望这篇文章能帮助到你,为你提供SSH免密码登录CentOS/RHEL的基本认知和快速指南。谢谢大家对本站的支持!