`-d` 옵션으로 실행하여 시작할 때 SSHD에 대한 로깅?


1

완전히 패치 된 OS X 10.8.5에서 작업하고 있습니다. /usr/local/sbin포트 1522 에서 수신 대기 하도록 업데이트 된 OpenSSH 서버를 설치 했습니다 ssh_exchange_identification: Connection closed by remote host. 연결 시도 결과가 나타납니다 . sudo grep 'sshd' /var/log/* 2>/dev/null서버에서 거의 아무것도 반환하지 않으므로 원인에 대해 서버에서 더 많은 정보를 수집하려고합니다.

에 따르면 man sshd(8), -d디버그 모드이며 표준 오류에 자세한 디버그 출력을 전송합니다. 나는 추가 -dProgramArgumentsPLIST에 있지만, PLIST는 설정 StandardErrorPath/dev/null. 그래서 디버깅 정보가 삭제되고 있다고 생각합니다.

launchctl(1)매뉴얼 페이지를 확인 했지만 StandardErrorPath어딘가에 기록되도록 수정해야 할 작업이 표시되지 않습니다 . 매뉴얼 페이지에서는 이름 / 값 쌍에 대해서도 논의하지 않았습니다.

디버그 로깅이 어딘가에 기록되도록 구성을 어떻게 변경해야하며 "어딘가"가 어디에 있는지 알고 있습니까?


$ cat /System/Library/LaunchDaemons/ssh-7.1.plist
<?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-v7.1</string>
    <key>Program</key>
    <string>/usr/local/sbin/sshd</string>
    <key>ProgramArguments</key>
    <array>
        <string>-i -d</string>
    </array>
    <key>Sockets</key>
    <dict>
            <key>Listeners</key>
            <dict>
                    <key>SockServiceName</key>
                    <string>1522</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>
</dict>
</plist>

답변:


1
  1. -dsshd에 인수 를 추가하려면 배열에 새 요소로 추가해야합니다.

    <string>-d</string>

    섹션은 다음과 같아야합니다.

    <key>ProgramArguments</key>
        <array>
            <string>-i</string>
            <string>-d</string>
        </array>
  2. plist 파일을 직접 편집하는 대신 /usr/libexec/PlistBuddy(-h를 사용 하여 도움말 표시)를 사용할 수 있습니다 .

  3. ssh-util.rb로깅을 켜거나 끌 수 있는 유틸리티 스크립트 가 있습니다. 이 OpenSSH-189패키지는 opensource.apple.com 에있는 패키지의 일부입니다 .

    ssh-util.rb에 연결

    다음은 루비 스크립트에서 생성 된 필수 명령입니다.

    /usr/bin/ruby ./ssh-util.rb -l on -v --debug --dryrun

    또는 수동 :

    sudo /usr/libexec/PlistBuddy -c "add :ProgramArguments:2 string '-ddd'" /System/Library/LaunchDaemons/ssh.plist
    sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
    sudo launchctl load /System/Library/LaunchDaemons/ssh.plist
    sudo touch /var/run/com.openssh.sshd-asl-enabled
  4. 디버깅이 끝나면 다음 중 하나를 실행해야합니다.

    /usr/bin/ruby ./ssh-util.rb -l off -v --debug --dryrun 

    또는 수동 :

    sudo /usr/libexec/PlistBuddy -c "Delete :ProgramArguments:2" /System/Library/LaunchDaemons/ssh.plist
    sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
    sudo launchctl load /System/Library/LaunchDaemons/ssh.plist
    sudo rm -f /var/run/com.openssh.sshd-asl-enabled

OS X 로깅에 대한 참고 사항


나는 무언가를 수행해야하기 때문에 디버깅 정보가 여전히 파악 될 것이라고 생각합니다 StandardErrorPath.

'마법'은 마지막 줄에서 수행됩니다 (/ var / run에 파일 작성). 방금 ssh-util.rb스크립트 를 통해 로깅을 설정하고 /var/log/sshd.log만들었습니다.
rprimus

내 대답에서에 연결했습니다 "Notes on OS X Logging". 에 봐 /etc/asl도를 보라 /etc/asl.conf. (syslog에 관한 @Jakuje의 의견은 정확합니다.)
rprimus

0

적절한 로깅 이벤트에서 sshd당신은 설정하지 않아야 -d이 디버깅을 위해 예약되어 있기 때문에, swiches을하지만,해야 사용자 sshd_config(OSX에서의 위치를 확인하지 않음).

에 필요한 sshd_config옵션 LogLevel을 조정할 수있는 옵션 이 있습니다. 기본적으로 가장 자세한 수준은 DEBUG3입니다. 디버깅에 유용한 많은 정보를 제공합니다.


를 설정하면 ?로 LogLevel=DEBUG3인해 삭제되지 않습니다 StandardErrorPath=/dev/null. (죄송합니다. 저는 보통 OpenSSH를 관리하지 않습니다. 일반적으로 "그냥 작동합니다").

stderr (적어도 다른 * nix)에 로그온하지 않았으며 syslog 또는 시스템에서 제공하는 다른 로거 (일반적으로 /dev/log소켓 사용 )를 사용하여 기록됩니다 .
Jakuje
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.