一、为什么要实现SSH免密登录
在项目实战中,实现SSH免密登录可以大大提高远程服务器管理的效率和安全性。
需要注意的是,为了确保安全,建议仅将免密登录方式授权给可信任的用户和服务器。
二、基于Git实现SSH免密登录的步骤
为了实现SSH免密登录,需要在本地和远程服务器之间建立一个SSH密钥对,以下是一个基于Git实现SSH免密登录的具体步骤步骤,注意:以下步骤适用于大多数情况,但具体实现可能因操作系统、Git版本和远程服务器设置而有所不同。
2.1 在本地生成SSH密钥对
在本地计算机上生成SSH密钥对,如果没有密钥对则生成一个新的。
在Windows上可以使用Git Bash或PuTTY,在Mac或Linux上则可以直接使用终端。
在命令行中输入以下命令,即生成密钥对的命令如下:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
上述命令会生成一对密钥,其中
参数 | 参数说明 |
---|---|
-t rsa | 表示使用RSA算法生成密钥对 |
-b 4096 | 表示密钥长度为4096位 |
-C “[email protected]” | 表示密钥对关联的邮箱地址 |
执行完毕后,会在用户主目录下生成一个.ssh目录,并在其中生成公钥和私钥文件。
2.1.1 公钥文件
公钥文件名为id_rsa.pub
公钥(以.pub结尾)需要上传到远程服务器
2.1.2 私钥文件
私钥文件名为id_rsa
私钥则保留在本地计算机上。
默认情况下,私钥文件是加密的,需要使用ssh-keygen -e id_rsa命令将其转换为可读的格式。
2.2 上传公钥到远程服务器
( 即通过git命令将本地公钥拷贝到远程服务器)
在命令行中输入以下命令,将公钥上传到远程服务器,该命令会将本地的公钥拷贝到远程服务器,并将其添加到用户的authorized_keys文件中。
ssh-copy-id username@remote_server_ip
ssh-copy-id -i /.ssh/id_rsa.pub username@remote_server_ip
其中
参数 | 参数说明 |
---|---|
username | 是你在远程服务器上的用户名 |
remote_server_ip | 远程服务器的IP地址 |
2.3 测试SSH免密登录
现在可以尝试使用SSH免密登录远程服务器。在Git Bash(本地命令行)或终端中输入以下命令:
ssh username@remote_server_ip
如果一切顺利,应该可以直接登录到远程服务器,不再需要输入密码。
如果一切正常,将会直接登录到远程服务器,而无需再输入密码。
2.4 配置Git使用SSH免密登录
最后,为了让Git能够使用SSH免密登录远程服务器,需要配置Git使用正确的SSH路径。
在Git Bash或终端中输入以下命令:
git config --global core.sshCommand "ssh -F /dev/null"
以上就是基于Git实现SSH免密登录的步骤。