摘要:MacOS下免密登录的一些注意事项。
系统环境
操作系统:macOS Sonoma 14.2.1
SSH免密登录
ssh免密登录的原理是在本机生成本机的ssh公钥和私钥,将公钥上传至待连接的主机,本机通过私钥进行ssh连接实现免密登录。
# ssh密钥生成命令
ssh-keygen
# ssh上传(复制)命令
# ssh-copy-id格式:ssh-copy-id -i 私钥 远程主机用户名@远程主机IP
# ssh-copy-id命令示例
ssh-copy-id -i ~/.ssh/id_liupp [email protected]
# ssh登录
# 命令格式: ssh -i 私钥 远程主机用户名@远程主机IP
# ssh登录示例:
ssh -i ~/.ssh/id_liupp [email protected]
关于这两个命令的具体用法可以通过搜索引擎查询.
# ssh免密连接命令
ssh root@IP
回车后仍然提示输入密码,通过搜索引擎查询,得出的结果是mac系统下需要使用“ssh-add”命令将私钥添加至ssh-agent高速缓存:
# ssh-add 命令格式
# ssh -add -K 私钥
# 示例:
ssh -add -K ~/.ssh/id_liupp
但输入后提示:
WARNING: The -K and -A flags are deprecated and have been replaced
by the --apple-use-keychain and --apple-load-keychain
flags, respectively. To suppress this warning, set the
environment variable APPLE_SSH_ADD_BEHAVIOR as described in
the ssh-add(1) manual page.
释义为-K参数对于Mac来说已经过期,需要将“-K”参数换成“–apple-use-keychain”:
# ssh-add 命令格式
# ssh -add -K 私钥
# 示例:
ssh-add --apple-use-keychain ~/.ssh/id_liupp
添加成功后再在终端执行 “ssh root@IP”即可实现免密登录。
存在问题及解决方案
经过使用发现一个问题,即是在本机重启后,免密登录会失效,经查询得知,ssh-add将私钥添加到高速缓存,但缓存在重启后会失效,需要每次重启后重新添加,在mac下的解决方案是:
1.在“应用程序”中的找到“自动操作”应用(或CTRL+SPACE)搜索自动操作
2.打开后默认弹出选择文件对话框,点击“取消”,点击启动栏的自动操作图标,“选取文稿类型”中选择“应用程序”:
3.左侧“资源库”选择“实用工具”,双击右侧的“运行shell脚本”将ssh-add命令复制至运行脚本脚本中,点击标题栏左侧的“未命名”,起个名字(这里命名为add-ssh-key)并保存至指定位置。
4.打开“系统设置”,左侧搜索栏搜索“登录项”,在“登录项”的“登录时打开”中将保存的自动执行程序(add-ssh-key)添加进来.
5.重启后验证,至此配置完毕。
6.操作步骤图示见下方: