首页 > Linux, SSH > SSH/SCP自动登陆的三种方法

SSH/SCP自动登陆的三种方法

2013年8月7日 发表评论 阅读评论    

背景:

开发机是fedora,无法使用xshell等可以保存密码的软件工具,而服务器大概有10来台,都是centos,有些需要通过跳板方式登陆,每次都要输入地址和密码显得很麻烦且费时间,所以查找了一些资料,总结一下,大概有3种方案,特记录下来。当然,自动登陆都是有风险的,所以请酌情使用

方案一:sshpass登陆,明文密码,不安全(需要安装sshpass)

比如说:
       ssh jenkins@10.99.0.245,假设密码为yyy,利用sshpass,则可写作:

sshpass -p yyy ssh jenkins@10.99.0.245

对于ssh的第一次登陆,会提示:“Are you sure you want to continue connecting (yes/no)”,这时用sshpass会不好使,解决方法:

  1. 可以在ssh命令后面加上 -o StrictHostKeyChecking=no来解决。比如说上面的命令,就可以写作sshpass -p yyy ssh jenkins@10.99.0.245 -o StrictHostKeyChecking=no。
  2. 或者写入配置文件:把 StrictHostKeyChecking no 加到/etc/ssh/ssh_config可以让ssh客户端自动接受新主机的hostkey,不用每次都自己输入yes

方案二:证书登陆,比方案一安全,但证书可以被拷贝,也有风险

1、生成密钥对

ssh-keygen -t rsa

在~/.ssh目录下生成一个私钥id_rsa和一个公钥id_rsa.pub

2、在服务器上创建.ssh目录,权限必须是700

mkdir -m 700 .ssh

3、把公钥拷贝到服务器上的.ssh目录下

scp ~/.ssh/id_rsa.pub jenkins@[服务器ip]:/home/jenkins/.ssh

4、重命名为authorized_keys

mv id_rsa.pub authorized_keys

5、如果已经存在,则追加

cat id_rsa.pub >> authorized_keys

6、修改authorized_keys权限为644

chmod 644 authorized_keys

7、其实3、4、5、6步骤可以合并为一个步骤的,p是指定ssh端口,默认是22

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 jenkins@[服务器ip]

大功告成!现在可以直接“ssh [服务器ip]”来登陆了,不需要指定服务器账户

方案三:expect登陆,支持自动跳板登陆,支持自动跨服务器SCP拷贝文件,这是功能最强大的方法,但安全性介于方案一和方案二之间(需要安装expect)

案例1:实现从本机自动登陆到B服务器,再自动登陆到C服务器

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/expect -f
set timeout 30
spawn /usr/bin/ssh jenkins@B
expect "password"
send "xxx\r"
expect "]*"
send "/usr/bin/ssh jenkins@C\r"
expect "password"
send "yyy\r"
interact

案例2:实现从C服务器拷贝文件到本机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/expect -f
set timeout 300
set file [lindex $argv 0]
spawn /usr/bin/ssh jenkins@C
expect "password"
send "yyy\r"
expect "]*"
send "scp jenkins@C:/home/jenkins/$file .\r"
expect "password"
send "yyy\r"
expect "]*"
send "exit\r"
expect "]*"
spawn scp jenkins@B:/home/jenkins/$file .
expect "password"
send "xxx\r"
interact

expect的代码比较简单,可以参考expect spawn、linux expect 用法小记 | Linux服务器运维日志来理解,有不明白的可以留言讨论

分类: Linux, SSH 标签: , , ,
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading...
  1. 本文目前尚无任何评论.
您必须在 登录 后才能发布评论.