使用Unix密钥启用自动登录
今天,我们来继续学习Unix密钥的知识。当您使用 ssh、sftp 或 scp 登录到远程系统后,您仍需要使用密码才能完成登录过程。通过创建公钥或私钥,将密钥的公共部分附加到~/.ssh/authorized_keys 文件,并与远程站点交换了有效Unix密钥后,您可以省去提供密码的要求并允许自动登录。
要创建公钥或私钥,您需要使用 ssh-keygen 来指定Unix密钥加密的类型。在演示中使用了 rsa 密钥类型,但是其他密钥类型也有效。要创建密钥,请参见清单 11。
清单 11. 创建Unix密钥
- $ ssh-keygen -t rsa
- Generating public/private rsa key pair.
- Enter file in which to save the key (/root/.ssh/id_rsa):
您应输入保存Unix密钥(公共和私有组件)的文件的位置。使用缺省值(在主目录中的 .ssh 目录中)一般就可以了(请参见清单 12)。
清单 12. 提示输入密码
- Created directory '/root/.ssh'.
- Enter passphrase (empty for no passphrase):
如果您在此阶段输入了密码,则会创建安全密钥文件,但是在每次使用Unix密钥时,还必须输入密码。按 Return 意味着不需要任何密码(请参见清单13)。
清单 13. 通过按 Return 键跳过密码需求
- Enter same passphrase again:
- Your identification has been saved in /root/.ssh/id_rsa.
- Your public key has been saved in /root/.ssh/id_rsa.pub.
- The key fingerprint is:
- 98:da:8d:48:a8:09:44:b1:b3:62:51:2d:a9:6b:61:ba root@remotehost
现在已创建了公钥 (id_rsa.pub) 和对应的私钥 (id_rsa)。
要启用自动登录,您必须将公钥的内容复制到远程主机上 ~/.ssh 目录中的 authorized_keys 文件中。您可以使用 SSH 自动完成此操作(请参见清单 14)。
清单 14. 启用自动登录
$ cat ./.ssh/id_rsa.pub | ssh mc@remotehost 'cat >> .ssh/authorized_keys';
还有,如果在多个主机中经常执行此操作,则可以使用小脚本或 Shell 函数来执行所有必需步骤,如清单 15 所示。
清单 15. 使用 Shell 脚本启用自动登录
- OLDDIR='pwd';
- if [ -z "$1" ]; then
- echo Need user@host info;
- exit;
- fi;
- cd $HOME;
- if [ -e "./.ssh/id_rsa.pub" ]; then
- cat ./.ssh/id_rsa.pub | ssh $1 'cat >> .ssh/authorized_keys';
- else
- ssh-keygen -t rsa;
- cat ./.ssh/id_rsa.pub | ssh $1 'cat >> .ssh/authorized_keys';
- fi;
- cd $OLDDIR
您可以使用 setremotekey 脚本复制现有Unix密钥,如果密钥不存在,可在复制之前创建一个: $ setremotekey mc@remotehost
现在,每当需要使用公钥登录到远程主机时,您可以结合使用个人Unix密钥脚本和远程主机上该用户接受的密钥列表。
OpenSSH 是一个重要工具,它可以保护计算机之间的通信和信息传输的安全。它不仅是常规工具(如 Telnet、FTP 和 RCP)的安全替代方法,而且还可以充当其他服务(如 Subversion、X Windows System 和 rsync)的传输协议。
本文向您介绍了启动和运行 OpenSSH 所需的基本步骤,如何最有效地使用 OpenSSH 提供的主要工具,以及如何使用Unix密钥交换工具来简化登录和连接性问题。
【编辑推荐】
- 安装Unix OpenSSH的知识
- 修改Unix文件的扩展名
- Excel中导入Unix格式时间戳小技巧
- 学会截取Unix字符串的方法
- Unix字符串长度进行验证
- 上一篇:AIX内存调整命令简介
- 下一篇:学习使用Unix SFTP 交换文件