假如本地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
或者:
7)另外还有一点,如果执行完上面的步骤后还不work,可以check一下 .ssh的owner是不是user,用户组usergroup是不是user所属的group(假设为users),否则的话可以通过下面的命令设置:
[user@remotehost:~]$> chown -R user:users .ssh/
按顺序执行完上面的步骤后,ssh连接remotehost就可以不必输入密码就能认证了!
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就可以不必输入密码就能认证了!