ssh 公钥 私钥
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