联系方式 | 付款方式 | 关于我们
工单提交
安全退出
用户区

    设置ssh无密码登录linux服务器的方法
 

每次登录测试服务器,ssh登录总是需要输入密码。登录的少还行,登录的多了,多一行命令都是多余的。

rsa认证登录方式


制作密钥对


在客户端(本地机器)终端下输入以下命令


ssh-keygen -t [rsa|dsa]


rsa和dsa代表不同的算法


例如:

ssh-keygen -t rsa

一直回车就对了(不用设置密码)


将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub(如果用dsa则生成id_dsa,id_dsa.pub)

生成位置在/root/.ssh/文件夹下(我用的是root用户所以在root下,生成过程会有提示文件位置)

.ssh 是隐藏文件夹 使用 ls -a查看

将公钥放到服务器指定位置

方法一、直接复制


1、将公钥复制到服务器的root用户下的.ssh文件夹(用哪个用户登录就复制到哪个用户下的.ssh文件夹下)

scp /root/.ssh/id_rsa.pub root@172.16.0.164:/root/.ssh/

2、安装公钥


登录到服务器cd /root/.ssh/

cat id_rsa.pub >> authorized_keys

方法二、使用ssh-copy-id命令复制(推荐)


一个命令直接就ok了
ssh-copy-id root@172.16.0.164

验证


不用输入密码则成功,否则失败
ssh root@172.16.0.164

注意事项


上面操作测试过是没有问题的


linux的版本和使用的用户不同会有差别的。


如果出现问题可以考虑以下两点


1、id_rsa.pub和authorized_keys的文件权限问题
chmod 600 authorized_keys
chmod 700 ~/.ssh
2、ssh的配置文件

vim /etc/ssh/sshd_config
#启用 RSA 认证,默认为yes
RSAAuthentication yes
启用公钥认证,默认为yes
PubkeyAuthentication yes
#root用户ssh登录
PermitRootLogin yes

(这些配置我都是没有修改的,我的是redhat7.2)

自定义写个简单shell脚本


在常用文件夹下创建个文件
touch expectssh.sh

添加下面内容,将用户 、ip、密码修改成你自己的

#!/usr/bin/expect -f
set username root
set hostname 172.16.0.164
set password 123456
spawn ssh $username@$hostname
set timeout 1
expect { "yes/no"
{send "yes\r";exp_continue}
}
expect "$username@$hostname's password:"
send "$password\r"
interact

2、添加expectssh.sh执行权限


chmod u+x expectssh.sh

3、执行命令
expect expectssh.sh

(1、必须使用 expect 命令执行2、你可以再包一层 使用bash解析去执行)




 


关于我们 - 付款方式 - 价格总览 - 服务中心 - 诚聘英才 - 网站地图 - 联系我们
总部电话: 400-679-9994
传真:400-679-9994
大客户咨询热线:400-679-9994客户服务中心(7×24): 400-679-9994
机房联系(7×24支持): 400-679-9994
售后服务 7×14 小时支持: 400-679-9994
版权所有:山东三二科技有限公司 2006-2011
网址: www.222.cc 
企业法人营业执照注册号: 400105000123815
网址:美国VPS www.222.cc
鲁ICP备12009357号-2