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

猜你喜欢

转载自macken.iteye.com/blog/1465489