sshd
Macサーバーで使用するポートを変更したい。たとえば、ポート22からポート32までとしましょう。
編集/etc/sshd_config
が機能しないようです。誰もそれを変更する方法を知っていますか?すべてのOSXバージョンと互換性のある(少なくとも、できるだけ多くの)メソッドを好むでしょう。
sshd
Macサーバーで使用するポートを変更したい。たとえば、ポート22からポート32までとしましょう。
編集/etc/sshd_config
が機能しないようです。誰もそれを変更する方法を知っていますか?すべてのOSXバージョンと互換性のある(少なくとも、できるだけ多くの)メソッドを好むでしょう。
回答:
以前のすべての答えは機能していますが(グーグルが示唆しているように)、それらは汚れていて洗練されていません。
Mac OS Xで起動された処理済みサービスのリッスンポートを変更する正しい方法は、専用キーを変更できるようにすることです。
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>
注: El Capitan、Sierra、およびおそらく将来のバージョンでもこのファイルを編集できるようにするには、SIP(System Integrity Protection)を無効にする必要があります。システム整合性保護(SIP)[...]を無効にする方法を参照してください。
上記の編集により、sshdはIPV4のみでリッスンするようになります。
に変更を加えたssh.plist
後、ファイルを次のようにリロードする必要があります。
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist
を使用するlaunchctl stop ...
と、launchctl start ...
このファイルはリロードされないことに注意してください。
このリンクを入力するman launchd.plist
か使用すると、詳細情報が記載されたmanページを見つけることができます。
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>
/System/Library/LaunchDaemons/ssh.plist
man launchd.plist
。
これまでに読んだ(そして経験した)ことから、使用できる主な方法は3つあります。
それを行う別の方法は、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.gz
cd ./socat-1.7.3.2
sudo ./configure && sudo make && sudo make install
)sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22
)を送信することにより、正しいオプションを使用して、ポート22(デフォルトssh)を任意のポート(次の例では2222)にリダイレクトします。以上で、mac os xシステムファイルは変更されません。さらに、この方法はSnow Leopardだけでなく、Mac OS Xのすべてのバージョン、およびsocatが実行されるマシンでも機能します。
ルーター/ファイアウォールを使用する場合、最後に行う必要があるのは、ルーター/ファイアウォールに正しいリダイレクトコマンドを含めることです。
また、ssh.plistメソッド、servicesメソッド、その他のメソッドのいずれが他のメソッドよりも優れているか、洗練されているか、悪いかという議論に巻き込まれないようにします。
また、起動時に実行するスクリプトを簡単に準備して、マシンを再起動するたびに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>
を使用sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plist
してロードします。今後の再起動時に自動的にロードされます。
さらに、(i)ループバック(127.0.0.1)以外のインターフェイスからポート22への接続をブロックするようにファイアウォールを設定し、(ii)sshd.confファイルで同様の変更を行って、セキュリティを向上させることもできます。 sshがループバックのみでリッスンするようにします。
楽しい。
/etc/services
ファイルの編集は悪い考えです-githubまたはbitbucketアカウントへのSSHキーログインなどに影響し、新しいポートへの接続を試みて失敗します。
<key>KeepAlive</key><true/>
ます。
これはマニュアルページのどこにもきちんと文書化されていませんでしたが、リスナーを追加する以外に何もしたくない場合は、リスナーの配列を使用して辞書を追加できます。ポートを直接使用する場合は、/ etc / servicesを編集する必要はありません(ただし、ファイアウォールでポートを開くことを忘れないでください!)
<key>Listeners</key>
<array>
<dict>
<key>Bonjour</key>
<array>
<string>ssh</string>
<string>sftp-ssh</string>
</array>
<key>SockServiceName</key>
<string>ssh</string>
</dict>
<dict>
<key>SockServiceName</key>
<string>22222</string>
</dict>
</array>
man launchd.plist
。
/usr/libexec/sshd-keygen-wrapper
(下記のリストに示されている)plist自体で指定されているものとは異なるSSHを開始できることにも注意してください。猫を飼うと、常に始まり/usr/sbin/sshd
ます。