Mac OS X에서 sshd 포트를 변경하는 방법은 무엇입니까? 서버에서 사용 하는 포트를 변경하고

sshdMac 서버에서 사용 하는 포트를 변경하고 싶습니다 . 예를 들어, 포트 22에서 포트 32로 가정 해 봅시다.

편집 /etc/sshd_config이 작동하지 않는 것 같습니다. 누구든지 그것을 바꾸는 방법을 알고 있습니까? 모든 OSX 버전과 호환되는 (또는 가능한 한 많은) 방법을 선호합니다.



답변

이전의 모든 답변은 (Google이 제안한대로) 작동하지만 더럽고 우아 합니다.

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하거나 사용하여 자세한 정보가있는 매뉴얼 페이지를 찾을 수 있습니다 .


답변

sshd가 추가 포트에서 청취하도록하려면 소켓 사전에 여러 항목을 추가 할 수 있습니다.

예:

<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>

답변

지금까지 읽은 경험에서 사용할 수있는 세 가지 주요 방법이 있습니다.

  1. ssh.plist 파일에서 설정을 변경하십시오.
  2. / etc / services 파일에서 설정을 변경하십시오.
  3. /etc/sshd.conf 파일에서 설정을 변경하십시오.

Mac OS X 시스템 파일을 어지럽히 지 않기 위해 socat을 사용하여 포트 22를 원하는 포트로 리디렉션하는 것입니다.

  1. socat 다운로드 : http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz
  2. tar.gz 파일을 / usr / local / 디렉토리 ( sudo mv ./socat-1.7.3.2.tar.gz /usr/local/bin/socat-1.7.3.2.tar.gz)로 이동하십시오
  3. / usr / local / bin 디렉토리로 이동하십시오 ( cd /usr/local/bin)
  4. 압축 해제 : sudo tar -xvzf socat-1.7.3.2.tar.gz
  5. 압축되지 않은 파일 디렉토리로 이동하십시오. cd ./socat-1.7.3.2
  6. 일반적인 구성을 실행하고 설치하여 socat을 설치하십시오 ( sudo ./configure && sudo make && sudo make install).
  7. Socat 호출 ( sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22) 을 보내 올바른 옵션을 사용하여 포트 22 (기본값 ssh)를 원하는 포트 (예 : 2222)로 리디렉션하십시오.

완료되었으며 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>

sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plist로드 할 때 사용하십시오 . 나중에 다시 부팅 할 때 자동으로로드됩니다.

또한 (i) 루프백 (127.0.0.1) 이외의 다른 인터페이스에서 포트 22에 대한 연결을 차단하도록 방화벽을 설정하고 (ii) sshd.conf 파일을 다음과 같이 변경하여 보안을 향상시킬 수 있습니다. ssh가 루프백에서만 청취하도록하십시오.

즐겨.


답변

맨 페이지의 어느 곳에서 나이 문서를 제대로 볼 수는 없지만 추가 리스너를 추가하는 것 이상을 수행하지 않으려면 리스너 배열을 사용하고 추가 dict를 가질 수 있습니다. 포트를 직접 사용하는 경우 / 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>