使用公钥登录OpenSSH
2013年10月24日
16:47
- 生成密钥对
- 使用ssh-keygen生成密钥对
- 使用puttygen生成 密钥对
- 点击【Generate】按钮
- 随意移动一下鼠标
- 设置Key comment
- 设置保护私钥的密码
- 保存公钥和私钥
- 使用SSH Secure Shell生成密钥对
- 点选【Edit】->【Settings…】打开Settings对话框
- 选中左则【Global Settings】->【User Keys】菜单项
- 点击【Generate New Keypair】按钮
- 按向导生成密钥对
- 将公钥上传到服务器
- 更改OpenSSH服务配置文件
- Port
12345
ssh服务的监听端口最好改一下,这样会大大减少/var/log/secure中的垃圾日志 - PubkeyAuthentication
yes
公钥认证 - PasswordAuthentication
no
禁用密码认证 - 重启OpenSSH服务
- 使用私钥验证登录服务器
- 在GNU/Linux下登录
- 使用putty登录
- 在session面板填写服务器IP及SSH服务监听端口
- 在【Connection -> SSH -> Auth】面板填写私钥路径
我所知道的,有三种生成密钥对的工具,分别为GNU/Linux下的ssh-keygen命令、puttygen、SSH
Secure Shell。
[[email protected] Generating Enter Enter Enter Your Your The 71:b2:a7:45:84:db:b1:99:9c:b7:b3:65:c1:f7:8f:41 The +--[ | | | | | | | | | +---------------------+ |
生成的公钥为: /root/.ssh/id_rsa.pub
生成的私钥为:/root/.ssh/id_rsa
生成的公钥保存为:d:\id_rsa_putty.pub
生成的私钥保存为:d:\id_rsa_putty.ppk
这里需要注意的是公钥的格式。我所知道的公钥格式有两种,一种是OpenSSH的格式,另一种是RFC 4716定义的格式。puttygen和SSH
Secure Shell生成的公钥格式为RFC
4716规定的格式,ssh-keygen生成的公钥是OpenSSH的格式。所以如果使用的是puttygen或SSH
Secure Shell生成的密钥对,那么将公钥上传到服务器之后,需要将公钥的格式转换成OpenSSH的格式。可以在服务器上使用以下命令转换:
[[email protected] ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQBT2Qdda5Nu7iUL+DQYIcw2waoSYl22j3k4D9/ulJaOk09yAtqylEL85gtsjBiQZGWGJhA2Kz7HwsDhRPJQk/J3MsNGWlzI8Ruf/c2jAQKZiLMjjyKg1ceAMQNVjRR0zBmvJz06Mce2qBbjPoGt3tj1rCo3FP9SnE/ts64ySJJdRFnLfPKnwcE5cPCr1qUYyAMPHucniHUlOHll1lguw1eHRF63nWy8WycKyYAkM5c2yNEd1XMrm0GLPedcIRHi+cyLmIV1c6jwd21XS2F6QJk8yOGbjCBWEU1X1UMsB4FRg8nyQm5Rog+EPAsnOMz4UO7ZIzv+LKsyrGCBFc1fOFsZ |
对于私钥的格式,以上三种方式生成的私钥格式各不相同,但是可以使用puttygen进行转换。方法是先导入,再导出为需要的私钥格式。
/etc/ssh/sshd_config
# # # # # # # # Port 12345 #AddressFamily #ListenAddress #ListenAddress # # # Protocol # #HostKey # #HostKey #HostKey # #KeyRegenerationInterval #ServerKeyBits # # #SyslogFacility SyslogFacility #LogLevel # #LoginGraceTime #PermitRootLogin #StrictModes #MaxAuthTries #MaxSessions #RSAAuthentication PubkeyAuthentication #AuthorizedKeysFile #AuthorizedKeysCommand #AuthorizedKeysCommandRunAs # #RhostsRSAAuthentication # #HostbasedAuthentication # # #IgnoreUserKnownHosts # #IgnoreRhosts # #PasswordAuthentication #PermitEmptyPasswords #PasswordAuthentication PasswordAuthentication # #ChallengeResponseAuthentication ChallengeResponseAuthentication # #KerberosAuthentication #KerberosOrLocalPasswd #KerberosTicketCleanup #KerberosGetAFSToken #KerberosUseKuserok # #GSSAPIAuthentication GSSAPIAuthentication #GSSAPICleanupCredentials GSSAPICleanupCredentials #GSSAPIStrictAcceptorCheck #GSSAPIKeyExchange # # # # # # # # # #UsePAM UsePAM # AcceptEnv AcceptEnv AcceptEnv AcceptEnv #AllowAgentForwarding #AllowTcpForwarding #GatewayPorts #X11Forwarding X11Forwarding #X11DisplayOffset #X11UseLocalhost #PrintMotd #PrintLastLog #TCPKeepAlive #UseLogin #UsePrivilegeSeparation #PermitUserEnvironment #Compression #ClientAliveInterval #ClientAliveCountMax #ShowPatchLevel UseDNS #PidFile #MaxStartups #PermitTunnel #ChrootDirectory # #Banner # Subsystem # #Match # # # |
主要需要改动的就是以上标红的地方:
另外请注意一下以下配置:
#AuthorizedKeysFile
.ssh/authorized_keys
这表示上传到服务器的公钥存放在家目录中的.ssh/authorized_keys文件中。
cat |
service |
在GNU/Linux下需要更改一下私钥文件的权限:
[[email protected] |
登录:
[[email protected] ~]# ssh [email protected] -p 12345 -i Enter Last [[email protected] |
在GNU/Linux下使用sftp命令时没有能够指定私钥的参数,这时候可以在家目录中的.ssh文件夹下建立config文件,内容如下:
IdentityFile ~/.ssh/id_rsa_openssh Port 12345 |
来自为知笔记(Wiz)
使用公钥登录OpenSSH,码迷,mamicode.com