ssh密钥管理和认证代理
ssh允许用户把密钥存储在内存中,这就是ssh认证代理。认证代理为用户提供了使用RSA密钥而不必随时键入口令字的能力。这对于不必在所有登录、X会话或运行脚本时都要键入口令字提供便利是很有效的。
(一)ssh认证登录是ssh-agent。执行这个命令可以使认证代理运行,但是它没有在内存中增加任何密钥。密钥是由ssh-add命令增加的。
[root@localhost ~]# ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-CmeOr30022/agent.30022; export SSH_AUTH_SOCK;
SSH_AGENT_PID=30023; export SSH_AGENT_PID;
echo Agent pid 30023;
[root@localhost ~]# ps aux|grep ssh
root 2019 0.0 0.3 4388 1728 ? Ss Jun01 0:01 /usr/sbin/sshd
root 15483 0.0 0.4 7412 2324 ? Ss Jun16 0:20 sshd:
root@notty
root 25387 0.0 0.5 7380 2628 ? Ss Jun16 0:00 sshd:
root@pts/0
root 30023 0.0 0.2 3868 1128 ? Ss 01:05 0:00 ssh-agent
root 30053 0.0 0.1 3756 700 pts/0 R+ 01:06 0:00 grep ssh
这样就启动了ssh认证代理。
认证代理产生UNIX套接字,该套接字被存放在/tmp/ssh-username/agent-socket-processID
中。套接字名定位在环境变量SSH_AUTH_SOCK中。Secure Shell为维护认证代理安全性所做
的一件事是使它只能被用户自身访问。然而,超级用户可以访问它,并且如果同一个用户启
动另外的ssh-agent进程,这可能产生问题。
注意记住,运行ssh-agent将不会把你的密钥载入内存。你必须用ssh-add命令自己把密
钥载入内存。
(二)接下来我们先生成登录到远程机器的密钥对
[root@localhost ~]# ssh-keygen -t dsa -f ~/.ssh/id_dsa10.4.5.29
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa10.4.5.29.
Your public key has been saved in /root/.ssh/id_dsa10.4.5.29.pub.
The key fingerprint is:
ed:b1:b1:5b:d9:6e:8a:01:71:5c:0b:ec:b9:89:51:f1
root@localhost.localdomain
[root@localhost ~]#
-t 指定生成的密钥对类型
-f 指定生成的密钥文件的位置和名称,本例中我想把这个密钥对只用于10.4.5.29这台计算机,所以取了id_dsa10.4.5.29这个名字。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
这两行要求我们输入密钥口令字,要输入两次。
这个命令执行成功后,会在~/.ssh/目录下生成两个文件id_dsa10.4.5.29和id_dsa10.4.5.29.pub两个文件。
然后,我们把id_dsa10.4.5.29.pub这个文件先传输到10.4.5.29这台计算机上,当然这时是要我们输入用户密码的。之后登录10.4.5.29计算机,
[root@server root]# cat id_dsa10.4.5.29.pub >> ~/.ssh/authorized_keys
现在我们重新登录10.4.5.29
[root@localhost ~]# ssh -i ~/.ssh/id_dsa10.4.5.29 10.4.5.29
Enter passphrase for key '/root/.ssh/id_dsa10.4.5.29':
Last login: Sat Jun 17 01:06:08 2006 from 10.4.5.161
[root@server root]#
-i 指定我们要使用的私钥文件。
然后我们要输入密钥口令字,才可登录到10.4.5.29这台远程计算机。这样是很不方便的。
(三)把密钥加入ssh-agent
当你已经用代理运行时,需要把R S A密钥加到代理中。要把密钥加到ssh-agent,你需要
运行ssh-add。它把私有RSA密钥加到ssh-agent中,并且允许通过Secure Shell连接转发密钥。
这意味着在加入密钥和ssh-agent运行后,你只需要键入一次口令字来使它运行。
要加入你的身份密钥,你需要做的只是运行ssh-add :
[root@localhost ~]# ssh-add ~/.ssh/id_dsa10.4.5.29
Enter passphrase for /root/.ssh/id_dsa10.4.5.29:
Identity added: /root/.ssh/id_dsa10.4.5.29 (/root/.ssh/id_dsa10.4.5.29)
[root@localhost ~]#
把id_dsa10.4.5.29这个密钥加入到ssh-agent代理中,我们在这里还需要输入一次密钥口令字。
这时我们再次登录10.4.5.29远程计算机:
[root@localhost ~]# ssh -i ~/.ssh/id_dsa10.4.5.29 10.4.5.29
Last login: Sat Jun 17 01:35:00 2006 from 10.4.5.161
[root@server root]#
这次我们就不需要再输入密钥口令字了,可以自由的登录远程计算机。
(四)相关命令
>>如果你要列出所有存储在认证代理中的当前身份,则使用- I选项:
[root@localhost ~]# ssh-add -l
1024 81:71:25:91:30:5b:f3:7a:ba:f0:a9:56:2d:51:fd:e4 /root/.ssh/id_dsa10.4.5.29 (DSA)
[root@localhost ~]#
>>你可以把多重身份存储在s s h - a g e n t中。你也可以使用s s h - a d d把身份从Secure Shell代理中移去。要移去一个身份,使用后面跟着身份文件名的- d选项:
[root@localhost ~]# ssh-add -d /root/.ssh/id_dsa10.4.5.29
Identity removed: /root/.ssh/id_dsa10.4.5.29 (/root/.ssh/id_dsa10.4.5.29.pub)
[root@localhost ~]# ssh-add -l
The agent has no identities.
>>要移去所有的身份,使用- D选项:
[root@localhost ~]# ssh-add -D
这意味着你不必逐一登录到每台远程主机上以移去身份—你可以在本地完成该工作。
>>你可以很容易地移去ssh-agent。你也可以在从X会话退出时杀死ssh-agent进程或通过杀死SSH_AGENT_PID来终止ssh-agent。
[root@localhost ~]#kill -9 $SSH_AGENT_PID
或
[root@localhost ~]#ssh-agent -k
分享到:
相关推荐
本文将详细讲解如何通过SSH密钥对和SSH代理来连接Linux服务器,以实现更安全、便捷的管理。 首先,了解SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。SSH密钥对认证是SSH...
在Linux环境中,SSH(Secure Shell)是一种用于安全远程登录到服务器的标准协议,它允许...正确配置和使用SSH密钥对、SSH配置文件、密钥代理和集中式密钥管理工具,可以有效提升系统的安全性,同时简化日常运维工作。
其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。 语法格式: ssh-agent [参数] 常用参数:...
SSH(Secure Shell)是一种网络协议,...总结,SSH命令及其密钥认证是系统管理员和开发者在日常工作中不可或缺的工具,提供了安全、便捷的远程访问方式。了解并熟练掌握这些知识,能够有效提升工作效率并保障网络安全。
此外,对于那些敏感的系统,还可以考虑使用密钥管理系统,如SSH密钥代理(SSH Agent),来更安全地管理和存储你的私钥。 以上就是在Linux中配置基于密钥认证的SSH的基本步骤和注意事项。理解并正确实施这一过程,...
3. **密钥管理**:使用密钥代理(如SSH Agent)来管理密钥,避免频繁输入密码。 **自动化与脚本**: SSH还可以用于自动化任务,如远程执行脚本或命令。例如,你可以使用`ssh user@example.com 'command'`在远程...
8. **SSH代理和密钥管理**:了解SSH代理(如ssh-agent)的使用,以及如何通过密钥管理工具(如gpg-agent或keychain)方便地管理多个SSH密钥。 9. **SSH版本差异**:对比SSH1和SSH2的不同,强调SSH2的优势,如更强的...
8. **密钥管理**:对于大型组织,可能需要使用密钥管理系统,如SSO(单点登录)集成,以集中管理和分发SSH密钥。 9. **SSH代理**:SSH代理(SSH-Agent)可以缓存用户的私钥,避免频繁输入密码,同时允许跨多个会话...
标题"Python-MacOS和Linux上的命令行ssh管理工具"暗示了我们将使用Python编程语言创建一个命令行工具,该工具可以在Mac OS和Linux系统上简化SSH连接和管理的过程。Python因其简洁、易读的语法和丰富的库支持而成为...
10. **两步验证**:除了SSH密钥,还可以结合使用Google Authenticator或其他时间同步式一次性密码(TOTP)应用,增加第二层身份验证,提高安全性。 通过上述步骤,我们可以构建一个基于SSH的登录验证系统,为用户...
3. **SSH密钥对生成和管理**:学习如何生成SSH密钥对,理解公钥和私钥的作用,以及如何将公钥添加到服务器的`~/.ssh/authorized_keys`文件中实现无密码登录。 4. **SSH配置文件**:掌握`sshd_config`文件的常用选项...
为了提高安全性,可以定期更换SSH密钥,限制失败尝试次数,使用更强的算法,或者配置密钥认证代理(Keychain)。 8. **SSH配置文件** 个人级别的SSH配置位于`~/.ssh/config`,在这里可以指定主机别名、端口、用户...
SSH还支持密钥对生成、公钥认证和代理转发等功能,为远程访问提供了高级别的安全保障。 其次,SSH权限管理的核心在于配置文件`sshd_config`,位于服务器的`/etc/ssh/`目录下。通过修改这个文件,管理员可以定义哪些...
2. **密钥管理**:SSH密钥有多种算法,如RSA、DSA、ECDSA和Ed25519。密钥长度的选择会影响安全性与速度,通常推荐使用更安全但计算量较大的算法。 3. **配置文件**:SSH客户端和服务器都有各自的配置文件,分别是`~...
3. 使用SSH客户端:熟悉SSH客户端工具(如OpenSSH或PuTTY),学习如何连接远程服务器,执行命令,传输文件,以及使用SSH密钥对进行免密码登录。 4. SSH隧道:理解SSH隧道的工作方式,包括本地和远程端口转发,如何...
2. **SSH配置与安装**:学习如何在不同的操作系统(如Linux、Unix、macOS)上安装和配置SSH服务,包括修改SSH配置文件`sshd_config`,设置端口、用户权限、密钥认证等。 3. **密钥对生成与交换**:理解RSA、DSA、...
4. **SSH Keygen**:生成SSH密钥对的命令是`ssh-keygen`。通常,使用RSA或Ed25519算法。例如,生成一个新的RSA密钥对: ``` ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 5. **密钥对管理**:将...
- 使用SSH密钥对管理,可以无密码自动化登录,提高效率。 5. **SSH隧道和端口转发**: - SSH隧道:用于安全地转发本地或远程端口,绕过防火墙限制,如HTTPS代理通过SSH隧道。 - 动态端口转发:可以创建一个SOCKS...
SSH密钥对由一对密钥组成:公钥和私钥。公钥存储在远程服务器上,私钥则保留在本地客户端。当客户端尝试通过SSH连接时,服务器会验证客户端提交的签名,如果匹配成功,则允许登录,无需输入密码。 步骤一:生成SSH...