分享

Mac OS X开启SSH服务,并修改自定义端口

 爱喝酒的大白菜 2018-01-22

开启ssh服务没什么好说的,只要从系统偏好设置->共享->勾选“远程登录” 即可

修改默认端口,这个鸟东西把我折腾的死去活来,因为/etc/下面也有sshd_config文件,长的和Linux下一模一样,我就想当然的修改这个文件,然后执行

sudo launchctl stop com.openssh.sshd sudo 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.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.'

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多