在 MacOS Sonoma14.2.1系统中实现SSH免密登录,可按照以下步骤进行操作:
- 生成SSH密钥对
打开终端,进入到~/.ssh
目录(若该目录不存在,可以手动创建)。然后执行以下命令生成密钥对:ssh-keygen -t rsa -f cvm
执行命令后,连续两次直接回车,将在~/.ssh
目录下生成对应的密钥对,即私钥cvm
和公钥cvm.pub
。 - 将公钥上传至远程主机
使用以下命令将公钥上传到要免密登录的远程主机(需替换其中的root
为远程主机的用户名,ip
为远程主机的IP地址):ssh-copy-id -i ~/.ssh/cvm.pub root@ip
执行该命令期间,可能需要输入一次远程主机的密码。 - 将私钥添加到ssh-agent高速缓存
在Mac系统中,需要使用“ssh-add”命令将私钥添加至ssh-agent高速缓存。但由于“-k”参数对于Mac来说已经过期,需将其换成“–apple-use-keychain”。具体命令如下(需替换~/.ssh/id_liupp
为你的私钥路径):ssh-add --apple-use-keychain ~/.ssh/cvm
- 实现SSH免密登录
添加成功后,在终端执行以下命令即可实现免密登录远程主机:ssh root@ip
- 解决重启后免密登录失效的问题ssh-add将私钥添加到高速缓存,但缓存在重启后会失效,需要每次重启后重新添加。在Mac下可通过以下操作解决:
- 在“应用程序”中找到“自动操作”应用(或通过ctrl+space搜索),打开后点击“取消”,再点击启动栏的自动操作图标,在“选取文稿类型”中选择“应用程序”。
- 左侧“资源库”选择“实用工具”,双击右侧的“运行shell脚本”,将
ssh-add --apple-use-keychain ~/.ssh/cvm
命令复制到运行脚本中,点击标题栏左侧的“未命名”,给该自动执行程序命名(例如“add-ssh-key”)并保存至指定位置。 - 打开“系统设置”,左侧搜索栏搜索“登录项”,在“登录时打开”中将保存的自动执行程序(add-ssh-key)添加进来。
经过以上设置,重启后即可实现免密登录。
此外,若要通过别名实现免密登录,可回到Mac的~/.ssh
目录(若没有config
文件可手动创建),添加以下内容:
host cvm hostname ip user root identityfile ~/.ssh/cvm
其中,host
后的cvm
为别名,可自定义;hostname
为远程主机的IP地址;user
为用户名;identityfile
为私钥的路径。之后就可以直接使用ssh cvm
进行免密登录了。
需注意,SSH进行认证的过程中除了对用户目录有权限要求外,对服务器上的.ssh
文件夹和authorized_keys
文件同样有要求。如果日志中提示这两个的问题,可以通过如下方式进行修改:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
同时,免密登录的处理是用户对用户的,切换其他用户后,仍然需要输入密码。另外,远程机器的.ssh
目录需要700权限,authorized_keys
文件需要600权限,否则配置可能不成功(导致每次登录都得重新输入密码)。