Ubuntu/Debian Linux为OpenSSH安装Keychain SSH密钥管理器
如何安装钥匙串软件来管理在基于Debian或者Ubuntu的云服务器上运行的密钥? OpenSSH无需提供密码即可向远程系统提供RSA和DSA身份验证。钥匙串是ssh-agent的管理员。 由钥匙串启动的ssh-agent长时间运行,即使您从系统中注销,它也将继续运行。
但是,您可以控制此行为。
这对于您的shell和cron作业很有用,以使备份轻松共享单个ssh-agent进程。
从手册页:
当钥匙串运行时,它将检查正在运行的ssh-agent,否则将启动一个。
它将ssh-agent环境变量保存到~/.keychain/${HOSTNAME} -sh,以便后续的登录和非交互shell(例如cron作业)可以获取文件并建立无密码的ssh连接。
钥匙串支持大多数类似UNIX的操作系统,包括Cygwin。
它可以与Bourne兼容,csh兼容以及fishshell一起使用。
为Debian和朋友安装钥匙串
您可以在基于云的实例或者任何其他常规vps或者专用服务器的ssh会话上,通过命令行中的apt-get使用apt-get为OpenSSH安装密钥管理器。
以超级用户身份执行以下apt-get命令或者apt命令:
$ sudo apt-get install keychain
或者
# apt-get install keychain
输出示例:
Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: ssh-askpass The following NEW packages will be installed: keychain 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 38.4 kB of archives. After this operation, 85.0 kB of additional disk space will be used. Get:1 http://deb.debian.org/debian stretch/main amd64 keychain all 2.8.2-0.1 [38.4 kB] Fetched 38.4 kB in 0s (179 kB/s) Selecting previously unselected package keychain. (Reading database ... 24724 files and directories currently installed.) Preparing to unpack .../keychain_2.8.2-0.1_all.deb ... Unpacking keychain (2.8.2-0.1) ... Processing triggers for man-db (2.7.6.1-2) ... Setting up keychain (2.8.2-0.1) ...
如何设置公钥认证?
首先,使用mkdir命令创建一个名为$HOME/.ssh /的目录:
$ mkdir $HOME/.ssh/ $ chmod 0700 $HOME/.ssh/
执行以下命令之一以使用RSA(或者任何其他类型的密钥)加密在$HOME/.ssh /目录中生成您的公钥和私钥:
$ ssh-keygen
或者
$ ssh-keygen -t rsa -b 2048
或者
$ ssh-keygen -t rsa
在提示时分配密码。
您应该在$HOME/.ssh /目录中看到两个新文件:
- $HOME/.ssh/id_rsa包含您的私钥。
- $HOME/.ssh/id_rsa.pub包含您的公共密钥。
来自上述命令的示例会话:动画gif -01:SSH设置公共密钥身份验证演示
使用scp或者ssh-copy-id命令将您的公钥文件(例如,$HOME/.ssh/id_rsa.pub)复制到远程服务器/主机上的帐户(例如,[email protected]) )。
为此,请执行:
## [ warning this will overwrite existing file on the remote box ] ## $ scp $HOME/.ssh/id_rsa.pub [email protected]:~/.ssh/authorized_keys
最好使用ssh-copy-id命令复制或者追加本地可用的密钥,以授权远程登录:
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
配置钥匙串
您需要使用诸如vi的文本编辑器来编辑名为$HOME/.bashrc或者~/.bash_profile的文件,运行:
$ vi $HOME/.bashrc
或者
$ vi $HOME/.bash_profile
添加/添加以下行:
##################################################################################### ### The --clear option make sure Intruder cannot use your existing SSH-Agents keys ### i.e. Only allow cron jobs to use password less login ##################################################################################### /usr/bin/keychain --clear $HOME/.ssh/id_rsa source $HOME/.keychain/$HOSTNAME-sh
或者
########################################################################### # allow $USER to use keys. Only enter once and it will remain enabled till # you delete it or reboot the server ########################################################################### /usr/bin/keychain $HOME/.ssh/id_rsa source $HOME/.keychain/$HOSTNAME-sh
登录时,您将看到如下所示的钥匙串管理器,以便您的shell和cron作业可以共享一个ssh-agent进程:实际使用的钥匙串
如何测试无密码登录?
尝试登录到您的远程服务器:
$ ssh user@remote-box-name-here $ ssh [email protected] $ ssh [email protected] uptime $ scp filename [email protected]:/path/to/dest
或者使用bash for loop测试更少的密码登录:
for i in cbz0{1..4} gfs0{1..4} do ssh $i uptime done
输出示例:
12:48:54 up 32 days, 15:40, 1 user, load average: 0.12, 0.13, 0.09 12:48:54 up 32 days, 15:39, 0 users, load average: 0.04, 0.06, 0.01 12:48:54 up 32 days, 15:40, 0 users, load average: 0.01, 0.03, 0.00 12:48:54 up 34 days, 20:11, 0 users, load average: 0.25, 0.09, 0.02 12:48:55 up 34 days, 20:15, 0 users, load average: 0.00, 0.01, 0.00 12:48:55 up 34 days, 20:09, 0 users, load average: 0.02, 0.04, 0.00 12:48:55 up 34 days, 20:05, 0 users, load average: 0.02, 0.06, 0.04 12:48:56 up 34 days, 19:58, 0 users, load average: 0.00, 0.00, 0.00