ssh密钥登录

一般的用户名密码认证不安全,很容易被暴力破解,还不方便;而大多数人都是选择使用 SSH 密钥认证,不仅安全还不用每次输密码

ssh密钥对

# 使用 ssh-keygen 生成非对称密钥,一路回车即可
ssh-keygen

# 执行完毕之后,会在 ~/.ssh/ 目录下生成 id_rsa 私钥、id_rsa.pub 公钥
# 公钥是可以公开的,放在你要登录的 ssh 服务器上(~/.ssh/authorized_keys)
# 私钥不可以公开,自己要保管好,别弄丢了,通常放在 ~/.ssh/id_rsa 默认路径;

# 接下来将公钥部署到服务器
## ssh-copy-id 方式(会自动配置好权限)
ssh-copy-id USER@SSH_SERVER
## 手动复制方式
scp -Cpr .ssh/id_rsa.pub USER@SSH_SERVER:.ssh/authorized_keys

# 如果 authorized_keys 已经有公钥了,不能这样直接复制,需要追加进去
## 先将生成的公钥拷贝到服务器上
scp -Cpr .ssh/id_rsa.pub USER@SSH_SERVER:.ssh/tmp_public_key
## 然后登陆到服务器上,添加公钥
cd ~/.ssh/
echo >> authorized_keys
cat tmp_public_key >> authorized_keys

# 如果是手动添加的,还需要配置权限
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/authorized_keys

ssh自动登录

# 配置完成后,我们就可以使用 ssh-key 进行登录了
ssh USER@SSH_SERVER

# 还可以配置 ~/.ssh/config,使用别名登录
vim ~/.ssh/config
--- config ---
Host    Server_A
    HostName        192.168.1.1
    Port            6666
    User            root
    IdentityFile    ~/.ssh/id_rsa/private_key.a
Host    Server_B
    HostName        192.168.2.1
    Port            7777
    User            root
    IdentityFile    ~/.ssh/id_rsa/private_key.b

# 使用别名登录服务器
ssh Server_A
ssh Server_B

ssh使用代理

连接国外 VPS 时,因为某些原因,ssh 连上了很卡,而且经常失去连接,因此需要让 ssh 走代理加速

ssh 使用 socks5、http_connect 代理:
ssh -oProxyCommand="nc -X5 -x127.0.0.1:1080 %h %p" USER@SSH_SERVER,通过 socks5 代理
ssh -oProxyCommand="nc -Xconnect -x127.0.0.1:1080 %h %p" USER@SSH_SERVER,通过 http_connect 代理

scp/sftp 使用 socks5、http_connect 代理:
scp -Cpr -oProxyCommand="nc -X5 -x127.0.0.1:1080 %h %p" files USER@SSH_SERVER:/tmp/
scp -Cpr -oProxyCommand="nc -Xconnect -x127.0.0.1:1080 %h %p" files USER@SSH_SERVER:/tmp/
sftp -oProxyCommand="nc -X5 -x127.0.0.1:1080 %h %p" USER@SSH_SERVER
sftp -oProxyCommand="nc -Xconnect -x127.0.0.1:1080 %h %p" USER@SSH_SERVER

如果你使用的是 XShell,也可以设置代理:
属性 -> 连接 -> 代理 -> 添加、选择代理服务器 -> 重新连接ssh