制作密钥对
首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:
[root@host ~]$ ssh-keygen <== 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
在客户端来看,SSH提供两种级别的安全验证。
- 在本地机器创建公钥
ssh-keygen -t rsa -C 'your email@domain.com'
-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱 - 将公钥复制到ssh服务器
将前一步骤生成的公钥/id_rsa.pub文件,复制到ssh服务器对应用户下的/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的三种。-
[适用于osx系统]使用ssh-copy-id-for-OSX工具将公钥复制至ssh服务器
brew install ssh-copy-id ssh-copy-id username@hostname #将username和hostname替换为你的ssh服务器用户名和IP
-
* 当ssh服务器username用户目录下尚未有.ssh目录时使用此方式
`cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"`
* 通用方式
```
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文件
- 快捷登录
完成以上步骤后,即可使用以下命令直接登录ssh服务器
ssh username@hostname #将username替换为你的ssh服务器用户名,hostname替换为服务器的ip
如果你本地终端使用的是zsh,那就太简单不过了,直接给zsh添加一条别名echo "alias ssh-to-username='ssh username@hostname'" >> ~/.zshrc #将username和 hostname替换为你的服务器信息 source ~/.zshrc #重新加载更改后的zshrc文件 ssh-to-username #使用别名,一条命令即可登录你的ssh服务器