joyssh 2012-03-27
ssh(Secure Shell)
OpenSSH的安全认证协议:RSA(1.0)/DSA(2.0)
RSA/DSA密钥工作原理
需要生成一对密钥,公钥、私钥,公钥用来加密,私钥用来解密;ssh的连接流程如图

密钥生成
生成rsa密钥对
ssh-keygen或者ssh-keygen -t rsa
默认在~/.ssh/下生成两个文件id_rsa(私钥),id_rsa.pub(公钥)
生成dsa密钥对
ssh-keygen -t dsa
默认在~/.ssh/下生成两个文件id_dsa(私钥),id_dsa.pub(公钥)
将生成的id_dsa(rsa).pub的公钥复制到对应server端的~/.ssh/authorized_keys文件内,即可打通两台机器之间的ssh
改造了一个ssh打通脚本
#!/usr/bin/expect
#version 2.0 使用ssh-copy-id命令进行公钥复制
#ssh自动打通脚本
#判断目录~/.ssh/id_rsa.pub 如果不存在 执行ssh-keygen -t rsa生成pub文件
#判断参数是否大于1个,必须指定host ip地址,用户名/密码默认为root Sogou-RD@2008
if { $argc < 1 } {
puts stderr "Usage:connect_ssh.exp host \[username\] \[password\]\n"
exit 1
}
# 设置超时时间为 60 秒
set timeout 60
# 将命令行输入的第一个参数作为将要登录的 SSHD 服务器
set host [lindex $argv 0]
# 将命令行输入的第一个参数作为将要登录的 SSHD 服务器
if { $argc > 1 } {
set name [lindex $argv 1]
} else {
set name root
}
# 第三个参数是以 $name 登录 $host 的口令
if { $argc > 2} {
set password [lindex $argv 2]
} else {
set password userpasswd
}
#root 用户的 rsa key 放在 /root/.ssh 中,其他用户则放在 /home/$name/.ssh
if { $name == "root"} {
#spawn scp /$name/.ssh/id_rsa.pub $name@$host:/tmp
spawn ssh-copy-id -i /$name/.ssh/id_rsa.pub $name@$host
} else {
#spawn scp /home/$name/.ssh/id_rsa.pub $name@$host:/tmp
spawn ssh-copy-id -i /home/$name/.ssh/id_rsa.pub $name@$host
}
# 等待上个命令的响应
expect {
"(yes/no)?" {
send "yes\n"
expect "assword:"
send "$password\n"
}
"assword:" {
send "$password\n"
}
}
expect eof
# 下面将测试能否自动登录,不用输入密码
spawn ssh $host -l $name
expect {
"~]#" {
send_user "Auto login the server successfully!"
}
"assword:" {
send_user "failed to login the server!"
}
}
#send "ls\n"
#expect "~]#"
# 退出 $host
send "exit\n"
interact参考资料:
http://hi.baidu.com/%BA%CE%C3%B7%D6%AE%D3%D1/blog/item/5146e58b41ef211ac9fc7a3b.html
http://blog.chinaunix.net/space.php?uid=21266384&do=blog&id=186425
http://jianjian.blog.51cto.com/35031/123391/
通用线程: OpenSSH 密钥管理
https://www.ibm.com/developerworks/cn/linux/security/openssh/part1/
https://www.ibm.com/developerworks/cn/linux/security/openssh/part2/index.html
http://www.ibm.com/developerworks/cn/linux/security/openssh/part3/index.html
SSH 安全性和配置入门
http://www.ibm.com/developerworks/cn/aix/library/au-sshsecurity/
通过 SSH 密钥验证实现在不同系统之间的脚本自动化
http://www.ibm.com/developerworks/cn/aix/library/1006_lisali_sshlogon/index.html
Unix/Linux 系统自动化管理: 远程登录篇
http://www.ibm.com/developerworks/cn/aix/library/0909_jinjh_unixlogin/
在 Linux 上进行自动备份
http://www.ibm.com/developerworks/cn/linux/l-backup/index.html?ca=dwcn-newsletter-linux