ssh免密配置

方法一

一般来说是使用账号密码登录的

ssh root@8.124.188.40
root为用户名,也可以是其他的用户角色
@后面接ip

然后会要求输入密码。

现在用ssh的方式不用在输入密码了,这个其实和以前的ssh远程仓库一样的

首先生成密钥,参考之前的ssh远程仓库,得到两个文件.pub的是公钥放服务器.

# 在本地生成公钥/私钥对
$ cd ~
$ cd .ssh
$ ssh-keygen

image-20251025125749067

本地也要给文件权限

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa

在远程服务器创建的.ssh文件下创建一个文件,里面保存公钥即可(注意是在远程服务器的哈)这里涉及vim编辑,然后把生成的.pub内容复制到服务器的.ssh当中的authorized_keys文件当中,没有这个文件就生成.同时还要给权限。

测试

$ ssh -v git@xxx.xxx.xxx.xxx(公网IP)
#不要求输入密码就成功了

总结

  1. 生成密钥对(公钥 + 私钥)
    公钥放远程、私钥留本地。
  2. 对应路径
    • macOS / Linux 本地:~/.ssh/
    • Windows(Git Bash):C:\Users\<用户名>\.ssh\
    • 远程服务器(假设用户为 git):/home/git/.ssh/authorized_keys
  3. 设置权限
    • .ssh 目录:700(仅本人可访问)
    • 私钥:600(仅本人可读写)
    • authorized_keys600(仅本人可读写)

远端

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

本地(macOS)

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_rsa

本地(Windows - Git Bash)

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519

如果服务器是多用户(比如 git、ubuntu、root 都能登录),要确保:

chown -R git:git ~/.ssh

“让 .ssh 这个文件夹真正归 git 用户所有,这样 SSH 登录时才会信任它。”不然属主不对,SSH 也会拒绝密钥登录。

方法二

免密ssh密码的配置(ubunut下或者gitbash都可以)

使用ssh-copy-id,然后输入一次密码。

ssh-copy-id username@your_server_ip

成功后输出:

Number of key(s) added: 1
Now try logging into the machine, with: "ssh username@your_server_ip"

以后连接就直接

ssh 用户名@ip