学习笔记

ssh配置

#ssh链接

1. 什么是 SSH

SSH(Secure Shell) 是一种加密远程登录和数据传输协议,广泛用于 Linux、Mac 以及 Windows 系统中。

为什么公钥/私钥最安全

  • 私钥(private key):存放在本地电脑,绝对不能泄露。

  • 公钥(public key):放在远程服务器或服务端(如 GitHub)。

  • 登录时,服务器用公钥生成一个挑战(challenge),本地私钥解密应答。

  • 优点

    • 无需密码传输,防止被监听。

    • 可以设置 passphrase 增加安全性。

    • 多服务器可以用不同密钥,便于管理。

相比于传统密码登录,公钥认证几乎不可破解,也避免了重复密码风险。


2. SSH 连接 GitHub

生成 SSH 密钥

ssh-keygen -t ed25519 -C "your_email@example.com"
  • 默认生成:

    • ~/.ssh/id_ed25519 → 私钥

    • ~/.ssh/id_ed25519.pub → 公钥

添加公钥到 GitHub

  1. 打开 id_ed25519.pub 文件,复制内容。

  2. 登录 GitHub → Settings → SSH and GPG keys → New SSH key → 粘贴内容。

  3. 测试连接:

ssh -T git@github.com
  • 成功会显示 GitHub 欢迎信息。

3. SSH 连接服务器

3.1 登录服务器方式

  1. 将公钥复制到服务器:
ssh-copy-id username@server_ip
  1. 或者手动把 id_ed25519.pub 内容写入服务器 ~/.ssh/authorized_keys

  2. 测试登录:

ssh username@server_ip
  • 配置 SSH config(多服务器/多密钥)

Host gobi-server
    HostName 117.72.67.82
    User root
    IdentityFile ~/.ssh/id_ed25519

登录时可直接:

ssh gobi-server

3.2 不登录服务器方式

  • 如果你不能用密码登录,或者只想上传公钥:

    1. 将公钥直接写入服务器 ~/.ssh/authorized_keys。

    2. 设置权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  • 适用于:

    • 云服务器控制面板上传公钥

    • 有 SFTP/文件访问权限但不能直接登录 SSH


4. SSH 传输文件

4.1 使用 

scp

  • 复制本地文件到服务器:
scp localfile.txt username@server_ip:/remote/path/
  • 从服务器下载文件:
scp username@server_ip:/remote/path/file.txt ./localpath/
  • 指定私钥:
scp -i ~/.ssh/id_ed25519 localfile.txt username@server_ip:/remote/path/

4.2 使用 

rsync

(推荐大文件/增量同步)

rsync -avz -e "ssh -i ~/.ssh/id_ed25519" ./localdir/ username@server_ip:/remote/dir/

4.3 常见注意事项

  • 确保 .ssh 目录权限正确。

  • 使用非默认端口时:

ssh -p 2222 username@server_ip
scp -P 2222 file.txt username@server_ip:/path/