Add SSH Key to Your Remote Client

前段时间,买了Vultr家的VPS用作shadowsocks,最近突然很感兴趣,于是捣鼓了下,每次登录的时候都需要输入密码有点麻烦,就找到了如何用ssh登录的方法。

准备工作

Mac、VPS(安装的是ubuntu 16.0)

工作原理

ssh除了使用密码验证外,还提供了一种公私密钥的验证方式。客户端生成一个私钥,并生成一个与之对应的公钥,然后将公钥上传到服务器上。

开始准备

  1. 在本地机器创建公钥
    在客户端生成私钥、公钥(注意,在Mac 上完成)
    1
    ssh-keygen -t rsa -C  'your email'

然后一路回车,生成你自己的密钥对,成功截图如下

密钥对截图

  1. 将公钥复制到ssh服务器
    将前一步骤生成的公钥~/id_rsa.pub文件,复制到ssh服务器对应用户下的~/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的一种。
    1
    2
    brew install ssh-copy-id
    ssh-copy-id username@hostname #将username和hostname替换为你的ssh服务器用户名和IP

当ssh服务器username用户目录下尚未有.ssh目录时使用此方式

1
cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

通用方式

1
2
3
4
scp ~/.ssh/id_rsa.pub username@hostname:~/ #将公钥文件复制至ssh服务器
ssh username@hostname #使用用户名和密码方式登录至ssh服务器
mkdir .ssh #若.ssh目录已存在,可省略此步
cat id_rsa.pub >> .ssh/authorized_keys #将公钥文件id_rsa.pub文件内容追加到authorized_keys文件

  1. 快捷登录
    完成以上步骤后,即可使用以下命令直接登录ssh服务器,妈妈再也不用担心你记不住密码了
    以后登录ssh,只需要在你的Mac上输入
    username@hostname``` 即可不用输入密码啦~
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 思考
    即使这样,我们还是需要输入远程服务器的ip地址,有时候真的脑容量不够啊,怎么办,怎么办,怎么办!!!
    没关系,我们还能实现本地一条命令就能登录
    **ssh本身也提供了一种快捷的方式来解决这个问题,往~/.ssh/config配置文件添加你的ssh服务器信息即可**
    在本地可客户端(你的Mac)输入

vim ~/.ssh/config

1
然后在终端输入 i 开始插入如下内容:

Host name#自定义别名
HostName hostname #替换为你的ssh服务器ip或domain
Port 22 #ssh服务器端口,默认为22
User root #ssh服务器用户名
IdentityFile ~/.ssh/id_rsa #第一个步骤生成的公钥文件对应的私钥文件

1
2
3
4
按下ESC,然后依次输入 :wq
保存并退出
最终,我们只需要在终端输入

ssh name
```
就能远程登录我们的VPS啦~

写在最后
这篇文章多亏了我们的黄小贱同学


您是本博客的第个小伙伴