ssh 免密登陆

来源:互联网 发布:工商数据查询 编辑:程序博客网 时间:2024/05/21 17:50

摘要:在本地生成公钥私钥对,并将公钥上传至 server 端实现免密登陆。

1. 使用 ssh-keygen 生成密钥

ssh-keygen -t rsa -f filename
  • -t 指定加密方式,一般有 rsa 和 dsa 两种
  • -f 指定文件名,无需写后缀

在生成密钥对时, 会要求输入 passphrase

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):

这里有两个选项:
* empty:直接回车,设置 passphrase 为空,之后在登陆 server 时也无需输入 passphrase
* not empty: 设置 passphrase,但需注意的是,以后每次在登陆 server 时都需输入 passphrase。

由于出于登陆方便的想法,本文在配置过程中设置为 empty。

2. 使用 ssh-copy-id 将公钥上传到 server

ssh-copy-id -i filename.pub user@remotehost

这一步中会自动的将公钥文件上传到 server端~/.ssh/authorized_keys 文件中,若无此文件,将创建并写入。

在执行过程中需要输入 server user password 验证身份

3. 多个 server 可以使用同一对密钥

公钥私钥只是用来验证用户身份,在不同 server 上可以使用相同的密钥,无需单独设置。(同样的,你要想单独设置也没问题)

4. Control Master

Control Master 的原理是在建立了 ssh 链接之后,将该 socket 保存,等再需 ssh 到同样的主机时,直接调用该 socket 文件,不用再创建新的链接。

这种方法好处在于方便,ssh scp 操作速度特别快。缺点在于,当机器重启或者网络断掉时 socket 失效,需要重新登陆。

所以在本文中 control master 配合密钥使用,登录时无需密码,短时内从新登陆或 scp 速度非常快。