SSH 代理配置 eval '$(ssh-agent -s)'
ssh-agent 代理 不是正向代理,也不是反向代理,它只是对密钥的代理,自动使用密钥
SSH 代理基础配置:
ssh-keygen //生成公钥与私钥,默认是2048位的私钥eval “$(ssh-agent -s)” //启动 ssh=agent 代理ssh-add ~/.ssh/id_rsa //将位于 ~/.ssh/id_rsa 路径下的私钥添加进代理ssh-copy-id -i ~/.ssh/id_rsa.pub skills39@192.168.10.99 //将 本地公钥 复制到远程服务器(若不指定路径,则默认复制公钥)ssh -A skills39@192.168.10.99 //启用代理 远程登陆
eval “$(ssh-agent -s)”详细解释:
在Linux和Unix系统中,eval "$(ssh-agent -s)"是用于启动ssh-agent代理程序的命令。在该命令中,$(ssh-agent -s)会执行ssh-agent命令,并输出一些环境变量和命令,例如SSH_AUTH_SOCK和SSH_AGENT_PID。然后eval命令会执行这些输出的命令和变量,以便在当前会话中启动ssh-agent代理程序。这个代理程序可以管理SSH私钥并提供SSH身份验证服务。
在更详细地描述这个命令之前,需要了解一些有关ssh-agent代理程序和SSH身份验证的基本知识:
1. ssh-agent代理程序是一个控制SSH密钥的进程,它管理使用ssh-add命令添加到代理程序中的SSH私钥,然后将这些密钥提供给SSH客户端进行身份验证。这样,用户无需在每次SSH会话开始时手动输入密码或者密钥文件。
2. SSH身份验证是一种常见的身份验证方式,它基于类似于公钥加密的机制。在使用SSH身份验证时,用户创建一个公钥/私钥对。公钥保存在远程主机上,而私钥保存在本地计算机上。当用户尝试与远程主机建立SSH连接时,远程主机会要求用户提供公钥进行身份验证。
现在我们来逐步分析eval "$(ssh-agent -s)"命令的工作过程:
1. 执行ssh-agent -s命令,将在控制台上输出一些环境变量和命令,例如:
```
SSH_AUTH_SOCK=/tmp/ssh-FwMPUI8473/agent.8473; export SSH_AUTH_SOCK;
SSH_AGENT_PID=8474; export SSH_AGENT_PID;
echo Agent pid 8474;
```
2. eval命令将这些命令和变量直接作为参数进行执行。其中,SSH_AUTH_SOCK环境变量表示ssh-agent程序使用的Unix socket文件路径,通过它可以让SSH客户端连接到ssh-agent程序,从而验证客户端的身份;SSH_AGENT_PID环境变量表示ssh-agent进程的PID(进程标识符),以备以后查找和关闭ssh-agent程序。
3. 通过这些命令和变量,ssh-agent代理程序就启动并开始运行,用户可以将自己的私钥添加到ssh-agent代理程序中。这样,当用户连接到远程服务器时,ssh-agent代理程序将使用用户的私钥进行身份验证,而不需要用户输入密码或手动选择私钥文件。
总之,eval "$(ssh-agent -s)"命令是在Linux和Unix系统中启动ssh-agent代理程序的常用方式。通过ssh-agent代理程序,用户可以方便地管理和使用SSH私钥,并避免了在SSH会话中反复输入密码或私钥文件的烦恼。此外,还有一些其他的使用方法和注意事项:
1. 如果您想在当前的shell会话中启动ssh-agent代理程序,请使用eval "$(ssh-agent)"命令,而不是eval "$(ssh-agent -s)"命令。这是因为在某些Linux发行版中,ssh-agent命令的输出格式可能略有不同。
2. 如果您想在多个终端或会话中使用ssh-agent代理程序,请将SSH_AUTH_SOCK和SSH_AGENT_PID环境变量设置为相同的值。这样,所有的终端和会话都可以使用同一个ssh-agent代理程序,而无需重新输入密码或者私钥文件。
3. 为了保护您的SSH私钥不被他人访问和使用,请务必将其存储在安全的地方,并设置适当的文件权限。此外,您还可以使用ssh-add命令将私钥添加到ssh-agent代理程序中,并设置密码保护。
4. 如果您不再需要使用ssh-agent代理程序,请使用ssh-agent -k命令关闭它。这将终止ssh-agent进程并删除SSH_AUTH_SOCK和SSH_AGENT_PID环境变量。
综上所述,eval "$(ssh-agent -s)"命令是启动ssh-agent代理程序的一种常用方式,可以方便地管理和使用SSH私钥,提高SSH的安全性和便利性。