Linux下服务器之间ssh无密码登录的配置方法
/* Layout-provided Styles */
h1.title {
font-size: x-large;
margin-bottom: 1ex;
text-align: center;
}
div.author {
font-size: large;
margin-top: 1.3ex;
margin-bottom: 0.7ex;
text-align: center;
}
div.standard {
margin-bottom: 2ex;
}
ol.enumerate {
margin-top: 0.7ex;
margin-bottom: 0.7ex;
margin-left: 3ex;
text-align: left;
}
div.plain_layout {
text-align: left;
}
ul.itemize {
margin-top: 0.7ex;
margin-bottom: 0.7ex;
margin-left: 3ex;
text-align: left;
}
div.Shaded {
background-color: gray;
padding: 0.5ex;
}
宿宝臣
ssh无密码登录是一个Linux下面很常见的管理任务,比如要自动远程执行服务器的某个命令时,或者自动scp/rsync远程服务器的文件时等。假设如下图所示:
假设我们要配置master主机的用户tom无密码登录slave主机的用户cat,配置步骤如下:
以tom身份登录master主机,执行如下命令(如果/home/tom/.ssh目录已经存在则跳过此步骤):
$ ssh-keygen
# 一路回车即可
以cat身份登录slave主机,执行如下命令(如果/home/tom/.ssh目录已经存在则跳过此步骤):
$ sudo apt-get install openssh-server # 如果已安装可跳过
$ ssh-keygen
# 一路回车即可
在master主机执行:
$ cd /home/tom/.ssh
$ scp id_rsa.pub cat@slave:/home/cat/.ssh/id_rsa.pub.tom
# 输入cat在slave的密码即可将id_rsa.pub文件复制到slave主机。
在slave主机以cat身份运行:
$ cd ~/.ssh
$ cat id_rsa.pub.tom >> authorized_keys
$ chmod 400 authorized_keys
这样就完成了从master主机无密码登录slave主机的所有步骤,可以在master主机以tom身份测试一下: ssh slave -lcat,应该不需要输入密码就能够登录slave主机了。如果要实现从slave主机到master主机的无密码登录,把上面的过程反过来做一遍就可以了。
如果需要在创建ssh key的时候无需人工干预(适合写到脚本中执行),可以用如下的命令:
$ ssh-keygen -q -N “” -f ~/.ssh/id_rsa -y
几个参数的意义如下:
-q:静默方式运行,即在屏幕不输出执行结果
-N:登录密码,因为是采用无密码登录,这里为空
-f:ssh key写入的文件名
-y:如果已经存在.ssh目录则自动覆盖,并且在执行后打印出public key(没有找到只自动覆盖的选项,这选项凑合用吧)。如果是在脚本中创建ssh key,则可以首先探测~/.ssh是否存在,就无需-y选项了。
远程主机的cat用户不一定是登录用户。为了安全起见,远程主机的cat用户往往设置为非登录用户,即slave主机的/etc/passwd文件中,将cat用户的登录shell修改为/bin/false。
0