开启ssh服务没什么好说的,只要从系统偏好设置->共享->勾选“远程登录” 即可
修改默认端口,这个鸟东西把我折腾的死去活来,因为/etc/下面也有sshd_config文件,长的和Linux下一模一样,我就想当然的修改这个文件,然后执行
sudo launchctl stop com.openssh.sshdsudo launchctl start com.openssh.sshd
屡次尝试都未果。
无奈之下只得Google之,【找到了这么个网页】,按照其中的方法在10.9和10.10上试验成功。
简单的把过程写一下:
1.备份ssh.plist:
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.plistsudo 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.'
联系客服