开启ssh服务没什么好说的,只要从系统偏好设置->共享->勾选“远程登录” 即可 修改默认端口,这个鸟东西把我折腾的死去活来,因为/etc/下面也有sshd_config文件,长的和Linux下一模一样,我就想当然的修改这个文件,然后执行 sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd 屡次尝试都未果。 简单的把过程写一下: sudo cp /System/Library/LaunchDaemons/ssh.plist /System/Library/LaunchDaemons/ssh.plist.bak 2.编辑/System/Library/LaunchDaemons/ssh.plist 文件,我们看到里面有Sockets这个key: <key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>ssh</string>
<key>Bonjour</key>
<array>
<string>ssh</string>
<string>sftp-ssh</string>
</array>
</dict>
</dict> 将其中的SockServiceName对应的string修改为想要的端口即可,不过我这里修改的是除了22端口,还额外的监听了2042这个端口,所以没修改Listeners,我又添加了一个Listeners,修改后的全部文件内容如下: <?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>
<true/>
<key>Label</key>
<string>com.openssh.sshd</string>
<key>Program</key>
<string>/usr/libexec/sshd-keygen-wrapper</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/sshd</string>
<string>-i</string>
</array>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>ssh</string>
<key>Bonjour</key>
<array>
<string>ssh</string>
<string>sftp-ssh</string>
</array>
</dict>
<key>Listeners2</key>
<dict>
<key>SockServiceName</key>
<string>2042</string>
</dict>
</dict>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>SHAuthorizationRight</key>
<string>system.preferences</string>
<key>POSIXSpawnType</key>
<string>Interactive</string>
</dict>
</plist> Listeners2就是我添加的内容 3.重新载入配置:网上说的那个launchctl stop/start方法在ssh服务上不适用,重启以后还是不会重新加载配置文件,应当进行如下操作: sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist 4.telnet或者ssh自己新的端口尝试一下吧。 补充一个单行命令版本的修改ssh服务端口脚本(看上去逻辑是对的,但我没验证): read -p 'Please enter new SSH Port number: ' sshport; sudo sed -i '-bak' -n '/SockServiceName/{p;n;s/>.*</>$sshport</;};p' /System/Library/LaunchDaemons/ssh.plist; echo 'SSH Port $sshport. Restart service for changes to take effect.' |
|