如何设置SSH无密码登录远程Linux主机

假如本地client要通过SSH登录远程主机remotehost,远程用户为user。


1)本地client创建一对密钥对,以DSA密钥对为例
[user@client:~]$>ssh-keygen -t dsa
系统将生成一对密钥:id_dsa(私鈅)和id_dsa.pub(公钥),默认存储在~/.ssh/路径下,执行该命令过程中会提示设置passphase,用于读取私鈅时密码认证。敲回车将不设置密码认证。


2)将client在本地生成的公钥id_dsa.pub拷贝到remotehost 的用户目录/home/user/.ssh/路径下
[user@client:~]$>scp ~/.ssh/id_dsa.pub  user@remotehost:~/.ssh/client.pub
为避免覆盖远程主机用户自己的pub文件,将拷贝的公钥文件重命名为client.pub


3)登录到remotehost,将client.pub叠加到authorized_keys文件中
[user@remotehost:~]$>cd .ssh
[user@remotehost:~/.ssh]$>cat client.pub >> authorized_keys
如果authorized_keys文件不存在,将创建新文件,client.pub的公钥信息将存于其中


4)修改authorized_keys文件权限为600
[user@remotehost:~/.ssh]$>chmod 600 authorized_keys


5)修改 .ssh 文件权限为700
[user@remotehost:~/.ssh]$>cd ~
[user@remotehost:~]$>chmod 700 .ssh


6)修改home目录/home/user的权限为700
[user@remotehost:~]$> chmod 700 /home/user
或者:

[user@remotehost:~]$> chmod go-rwx /home/user

这一步比较关键,很多中文描述的步骤中都没有包含这一点,导致按照上面步骤执行完之后,ssh连接时仍然要求输入密码认证,因为:SSH doesn't want the home directory to be too open! 所以还需要执行上面的步骤。


7)另外还有一点,如果执行完上面的步骤后还不work,可以check一下 .ssh的owner是不是user,用户组usergroup是不是user所属的group(假设为users),否则的话可以通过下面的命令设置:
[user@remotehost:~]$> chown -R user:users .ssh/


按顺序执行完上面的步骤后,ssh连接remotehost就可以不必输入密码就能认证了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值