You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ssh-agent is a program to hold private keys used for public key authentication. Through use of environment variables the agent can be located and automatically used for authentication when logging in to other machines using ssh.
# see https://stackoverflow.com/a/3818909
# ssh-keygen -p -f ~/.ssh/id_rsa
-p Requests changing the passphrase of a private key file instead of
creating a new private key. The program will prompt for the file
containing the private key, for the old passphrase, and twice for
the new passphrase.
-f filename
Specifies the filename of the key file.
配置文件位置
客户端配置文件:
~/.ssh/config
, 更多信息可参考 https://wangdoc.com/ssh/client服务端配置文件:
/etc/ssh/sshd_config
, 更多信息可参考 https://wangdoc.com/ssh/server配置:是否允许密码登录
服务端配置,配置项
PasswordAuthentication
,默认是yes
。配置:是否允许 root 用户登录
服务端配置,配置项
PermitRootLogin
,默认是yes
。配置:是否允许密钥登录
服务端配置,配置项
PubkeyAuthentication
,默认是yes
配置:密钥登录
生成密钥
执行命令
ssh-keygen
, 默认使用rsa
算法,可通过-t
参数指定其他算法,-C
参数增加注释信息。过程中会询问私钥文件路径,同时公钥的文件路径在私钥的基础上增加
.pub
后缀,例如私钥路径是~/.ssh/id_rsa
公钥路径是~/.ssh/id_rsa.pub
新生成的私钥默认权限是 600, 公钥权限默认是 644, 建议都改成 600:
将公钥上传到服务器
公钥内容需要保存在服务器的
~/.ssh/authorized_keys
文件中,每个文件占用一行。可以手动也可以使用命令辅助修改对应文件:
注意,
authorized_keys
文件权限要是 644,如果权限不对,ssh服务器可能拒绝读取该文件。公钥上传到服务器后,下次登录就会自动采用密钥登录,无需输入密码。
密钥登录时手动指定私钥文件
ssh 登录服务器时默认查找使用的私钥是以下几个:
~/.ssh/id_dsa
~/.ssh/id_ecdsa
~/.ssh/id_ed25519
~/.ssh/id_rsa
如果你的私钥文件不在以上之中,ssh 无法知道是哪一个,这时可以通过 -i 参数指定使用的私钥:
或者使用客户端配置
~/.ssh/config
文件ssh-agent: 解决 ssh 私钥密码频繁输入问题
新建密钥时,为了更加安全,可以设置私钥密码,即使私钥丢失,没有私钥密码也无法使用。
但是安全带来的问题是每次使用私钥都需要输入私钥密码,很不方便。
ssh-agent 可以解决问题: 它让用户在整个 Bash 对话(session)之中,只在第一次使用 SSH 命令时输入密码,然后将私钥保存在内存中,后面都不需要再输入私钥的密码了。
zsh:使用 ssh-agent 插件
即使有了 ssh-agent,每次使用也需要手动启动 ssh-agent ,还是不够方便。
为了避免手动维护 ssh-agent 状态,可以使用一些脚本,如果你在用 oh my zsh, 还可以使用插件:
编辑
~/.zshrc
, 添加ssh-agent
到插件列表:执行
source ~/.zshrc
使改动生效。客户端配置记得加上
AddKeysToAgent
配置项,使用到此私钥时,输入密码后会自动添加到 ssh-agent。安全:为私钥新增或修改密码
已存在的私钥新增密码或修改密码:
参考资料
阮一峰:SSH教程
The text was updated successfully, but these errors were encountered: