我安装了keychain
它并将其添加到我的.bashrc
CentOs 中以帮助管理我的 SSH 密钥:
/usr/bin/keychain --clear $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh
因此,在 SSH 登录时,系统会提示我输入密钥密码,该密码将持续到重新启动或会话终止。
启用此功能后,任何 SFTP 登录尝试都会在身份验证时停止。如何在忽略 SFTP 登录的情况下启用钥匙串支持?这可能吗?我不想在需要做某事时必须启用/禁用。
答案1
看起来您的登录 shell 是 bash,并且您的 SSH 服务器配置为调用您的登录 shell 来运行 SFTP 服务器。
您可以设置 sshd 来直接运行 SFTP 服务器,方法是在 中添加如下行/etc/sshd_config
:
Subsystem sftp /usr/lib/openssh/sftp-server
或者
Subsystem sftp internal-sftp
您还可以通过更改您的.bashrc
.这样做的好处是还可以修复 ssh 的其他非交互式使用的问题,例如 scp、rsync 等。bash 中存在一个设计错误:它加载.bashrc
交互式非登录 shell 和非交互式远程登录炮弹,尽管这两种情况完全没有共同点。在文件顶部添加一个防护,.bashrc
以在非交互式设置中忽略文件的其余部分:
[[ $- = *i* ]] || return