2010年9月14日 星期二

[HOWTO] 在 Mac OS X 上如何更改 sshd 的 port ?

Q:
在 Mac OS X 上如何將 sshd 的 port 由 22 改到 443 (或其他你喜歡的 port)?


A:

在一般 Linux 中,你只需要輕鬆改變 /etc/ssh/sshd_config 這個檔案裡的 Port 設定即可。但在 Mac OS X 上,更變這個設定檔 ( /etc/sshd_config ) 的 Port 設定,並沒辦法起甚麼作用!這是因為 Mac OS X (10.4版↑)是由 launchd 在控制 Server 啟動時的所有服務。

因此,我們要更改的是 launchd 所帶的 Daemon 設定檔 /System/Library/LaunchDaemons/ssh.plist !

編輯此檔案,將原本的內容:
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>Bonjour</key>
<array>
<string>ssh</string>
<string>sftp-ssh</string>
</array>
<key>SockServiceName</key>
<string>ssh</string>

</dict>
</dict>


找到 SockServiceName 標籤,將 string 內容由 ssh (服務名稱) 改成 443 (你要的Port號),同時加入必要的 launchd.plist xml properties (SockFamily, IPv4) 如下:

<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>Bonjour</key>
<array>
<string>443</string>
<string>sftp-ssh</string>
</array>
<key>SockServiceName</key>
<string>443</string>
<key>SockFamily</key>
<string>IPv4</string>

</dict>
</dict>


如此,重新開機後 sshd 便會 listen 在你指定的 port 上了!


參考資料:
 - Well known TCP and UDP ports used by Apple
 - How to change sshd port on Mac OS X

沒有留言: