大家好,又见面了,我是你们的朋友全栈君。
首先来看一下SSH免密登录的简易原理图:当主机A希望通过SSH免密登录主机B时,需要将主机A的SSH公钥复制到主机B的授权列表文件中。当A尝试登录B时,B会检查自己的授权列表文件,如果找到A的公钥,并经过一系列验证后,即可实现登录。
首先准备两台主机,分别命名为SSH-A和SSH-B(注意:这两台主机必须能够互相ping通)。
我的SSH-A主机的IP地址是:192.168.198.12,
SSH-B主机的IP地址是:192.168.198.13,
!!!!请注意,SSH Key是针对主机中某个特定用户的,每个用户的SSH Key都是唯一的。
开始(主机SSH-A免密登录主机SSH-B):
在SA用户下执行以下命令:ssh-keygen -t rsa
在出现的“Enter passphrase(empty for no passphrase)”和“The key fingerprint is”提示时,直接按回车键,使用默认设置。
2. 默认生成的.ssh目录位于用户的主目录下(我的用户主目录是/home/SA),进入.ssh目录。
进入用户主目录,由于.ssh是一个隐藏目录,需要使用ls -all命令才能看到。
3. 将.ssh目录下的id_rsa.pub文件远程复制到SSH-B主机上(使用远程复制命令scp)
执行命令:scp id_rsa.pub SB@192.168.198.13:/home/SB
此命令的含义是从本机将id_rsa.pub文件以SB用户的身份复制到192.168.198.13(SSH-B)主机的/home/SB目录下,SB是SSH-B主机上的一个用户,/home/SB是SSH-B的主目录。执行此命令时,需要输入SB用户的密码。
4. 在SSH-B主机上,以SB用户身份进入/home/SB目录,同样为SB用户生成SSH Key。
然后进入.ssh目录。
5. 将SSH-A的公钥添加到SB用户的.ssh目录下的authorized_keys文件中。如果authorized_keys文件不存在,则手动创建一个。注意:authorized_keys文件的权限必须设置为-rw-------,即只有SB用户有读写权限,其他用户没有任何权限。
可以通过chmod 600 authorized_keys命令来修改权限。
6. 测试登录,如果登录成功,则大功告成。
使用命令ssh SB@192.168.198.13表示以SB用户身份登录192.168.198.13主机。
追求完美:
从主机SSH-A登录到SSH-B主机:ssh SB@192.168.198.13
返回到原主机:ssh SA@192.168.198.12
问题:在登录回源主机时需要输入SA的用户密码,因为我们没有将用户SA的公钥添加到用户SA的authorized_keys文件中。只需将SA自己的公钥添加到用户SA的authorized_keys文件中,即可实现免密切换回源主机。
(1). 检查文件名是否正确,必须为authorized_keys。
(2). 检查authorized_keys的权限是否为-rw-------。
(3). 如果(1)和(2)都没有问题,则为SB用户添加超级用户权限。
方法:打开/ect/sudoers文件,找到root ALL=(ALL) ALL行,在此行下添加一行SB ALL=(ALL) ALL即可。
发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/ceacaf9856f429dadabb36e45a45c7e2
以上就是Linux主机之间 使用 SSH 免密登录「建议收藏」的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号