Ale*_*nko 57 ssh mac-osx-server mac-osx
我想更改sshdMac 服务器上使用的端口。例如,假设从端口 22 到端口 32。
编辑/etc/sshd_config似乎不起作用。有谁知道怎么改?我更喜欢与所有 OSX 版本(或至少尽可能多)兼容的方法。
drA*_*erT 66
以前的每个答案都有效(正如谷歌建议的那样),但它们又脏又不雅。
在 Mac OS X 上更改 launchd 处理服务的侦听端口的正确方法是使更改在专用密钥中可用
ssh.plist
所以解决方案就像使用端口号而不是服务名称一样简单。
我编辑的摘录/System/Library/LaunchDaemons/ssh.plist:
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>22022</string>
<key>SockFamily</key>
<string>IPv4</string>
<key>Bonjour</key>
<array>
<string>22022</string>
</array>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
笔记:
为了能够在El Capitan、Sierra以及可能的未来版本上编辑此文件,您需要禁用 SIP(系统完整性保护)。请参阅如何禁用系统完整性保护 (SIP)。
对于Catalina,即使在禁用 SIP 之后,卷也是不可写的。使用sudo mount -uw /以启用写入/System. 进行更改,然后恢复 SIP 并重新启动。
上述编辑还将强制 sshd 仅通过 IPV4 进行侦听。
对 进行任何更改后ssh.plist,必须按如下方式重新加载文件:
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist
Run Code Online (Sandbox Code Playgroud)
请注意,使用launchctl stop ...和launchctl start ...不会重新加载此文件。
可以通过键入man launchd.plist或使用此链接找到包含更多信息的手册页。
rai*_*mue 17
如果您希望 sshd 侦听其他端口,您可以向 Sockets 字典添加多个条目。
例子:
<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>22022</string>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
小智 6
从我目前阅读(和经历)的内容来看,可以使用三种主要方法:
另一种方法,我个人到目前为止更喜欢所有这些方法,因为它避免弄乱 Mac OS X 系统文件是使用 socat 将端口 22 重定向到您想要的任何端口。
sudo mv ./socat-1.7.3.2.tar.gz /usr/local/bin/socat-1.7.3.2.tar.gz)cd /usr/local/bin)sudo tar -xvzf socat-1.7.3.2.tar.gzcd ./socat-1.7.3.2sudo ./configure && sudo make && sudo make install)sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22)你已经完成了,你的 mac os x 系统文件保持不变。此外,此方法不仅适用于 Snow Leopard,而且适用于所有版本的 Mac OS X 以及任何可能运行 socat 的机器。
如果您使用路由器/防火墙,您需要做的最后一件事是在您的路由器/防火墙中包含正确的重定向命令。
此外,它避免陷入争论 ssh.plist 方法、服务方法或任何方法是否比另一个更好、更优雅或更差的争论中。
您还可以轻松准备一个在启动时运行的脚本,以在每次重新启动机器时重建 socat 重定向。把它放在/Library/LaunchDaemons/com.serverfault.sshdredirect.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.serverfault.sshdredirect</string>
<key>KeepAlive</key>
<dict>
<key>NetworkState</key>
<true/>
</dict>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/socat</string>
<string>TCP-LISTEN:2222,reuseaddr,fork</string>
<string>TCP:localhost:22</string>
</array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
使用sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plist加载它。它将在未来重新启动时自动加载。
此外,您还可以通过 (i) 将防火墙设置为阻止从环回 (127.0.0.1) 以外的任何其他接口到您的端口 22 的任何连接以及 (ii) 在您的 sshd.conf 文件中进行类似的更改来提高安全性让 ssh 只在环回上监听。
享受。
| 归档时间: |
|
| 查看次数: |
74630 次 |
| 最近记录: |