Linux的ssh常用的登录格式是这样的
ssh [-p port] user@remotehost
这样子每次都得输入密码, 当然这样子密码就不容易忘记了(呵呵).
1. 创建密钥
使用密钥登录需要先创建一对非对称加密的密钥, 使用ubuntu自带的 ssh-keygen
密钥生成工具即可生成
ssh-keygen -t rsa
控制台会按照以下顺序来与用户交互以完成密钥的生成工作:
- 密钥对存储目录(默认在~/.ssh/目录下的id_rsa文件)
- 私钥的加密口令(此口令用来保护私钥以防止它被别人窃取后滥用)
2. 将公钥上传到服务器
可以使用 scp
命令上传公钥, 当然Ubuntu提供了一个工具用来上传公钥并自动完成相应配置
使用 ssh-copy-id
:
ssh-copy-id [-i identity_file] [-p port] user@remotehost
上传完成后登录到服务器并检查其 ~/.ssh/authorized_keys 文件是否有重复密钥添加在其中
另者, authorized_key文件的权限必须只限其拥有者读写(权限 600)
3. 在本地将私钥文件添加到ssh-agent
如果没有将私钥添加到ssh-agent, 那么会报以下错误:
sign_and_send_pubkey: signing failed: agent refused operation
操作方法如下, 首先在当前bash进入 ssh-agent
环境
ssh-agent bash
然后使用 ssh-add
添加私钥到ssh-agent
ssh-add [private_key_file]
4. 配置(绑定)IP、用户名和端口
即使是配置了密钥对, 在使用ssh登录时依然需要附加端口号和用户名(当然, 默认端口22和用户名重名的情况下就不需要了).
使用以下方法将ip/用户名/端口预先配置(绑定)好
vim ~/.ssh/config
将以下信息写入配置文件
Host "remote ip"
User "username"
Port "port"
完成了以上操作, 就可以简单地使用以下命令登录服务器啦.
ssh remote_host