Mac 远程连接

ssh homer@localhost

提示失败:ssh: connect to host localhost port 22: Connection refused

 

解决方法

方法1:系统偏好设置重启电脑后失效,需重新配置

1)依次打开,Mac设置 ——》 偏好设置 ——》 共享

2)开启远程连接 ——》选择所有用户,如下图:

 

方法2:命令行设置重启电脑后失效,需重新配置)​

$ sudo systemsetup -getremotelogin
Remote Login: Off
$
sudo systemsetup -setremotelogin on
setremotelogin: remote login is already On.

 

方法3:开机启动配置推荐,实现了开机自动开启方法1

修改 /System/Library/LaunchDaemons/ssh.plist 中的 Disabled 为 false

因为 ssh.plist 有 Apple SIP 保护,所以修改 ssh.plist 比较麻烦,修改步骤如下:

1)查看 ssh.plist 是否有 SIP 保护

ls -lO /System/Library/LaunchDaemons/ | grep ssh.plist
-rw-r--r--  1 root  wheel  restricted,compressed   988 10 25 09:08 ssh.plist

上面字段包含了 restricted 表示有SIP强制保护

 

SIP保护机制,可以在安全模式下(Recovery OS),通过命令 csrutil enablecsrutil disable 设置开关

利用命令,查看系统是否开启了SIP机制,详见苹果官网文档

csrutil status
System Integrity Protection status: enabled.

 

2)重启,进入安全模式(Recovery OS)

To enable or disable System Integrity Protection, you must boot to Recovery OS and run the csrutil(1) command from the Terminal.

  1. Boot to Recovery OS by restarting your machine and holding down the Command and R keys at startup.

  2. Launch Terminal from the Utilities menu.

  3. Enter the following command:

    $ csrutil disable

After enabling or disabling System Integrity Protection on a machine, a reboot is required.

 

3)设置开机启动ssh脚本

核心是修改 /System/Library/LaunchDaemons/ssh.plist 中的 Disabled 为 false

a)按照步骤2)重启Mac,启动时同时按下按键 Command + R ,进入安全模式

b)打开 Utilities menu ——> 终端,输入禁用SIP命令:csrutil disable 

c)然后,重启Mac,正常进入Mac,因为在安全模式里无法修改 ssh.plist 权限和内容

d)修改ssh.plist 权限为可写入,执行命令:

sudo chmod 777 /System/Library/LaunchDaemons/ssh.plist

e)修改 /System/Library/LaunchDaemons/ssh.plist 中的 Disabled 为 false,如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Disabled</key>
	<false/>
	<key>Label</key>
	<string>com.openssh.sshd</string>
	<key>Program</key>
	<string>/usr/libexec/sshd-keygen-wrapper</string>
	<key>ProgramArguments</key>
。。。。。。

接着,设置开机启动ssh脚本

sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

 

f)恢复 ssh.plist 权限

sudo chmod 644 /System/Library/LaunchDaemons/ssh.plist

g)重启Mac,Command + R 进入安全模式,恢复SIP保护命令csrutil enable 

h)然后,重启Mac,正常进入Mac,查看是否开机自动开启远程登录了

结果是开机Mac、重启Mac,都会自动开启远程登录,即实现了方法1

 

 

参考推荐

Mac OS 80 端口占用问题的解决方法

Mac OS X 系统命令查看系统版本号

Mac 高效程序猿开发必备软件

Mac brew 安装软件