Mac OS Sierra(10.12.4)にPseudo-Distributed HBase環境をインストールしたいのですが、sshがインストールされている必要があり、ssh localhost
でパスワードなしでログに記録できます。しかし、時々ssh
を使用してログインするとエラーが発生しました。とりわけ質問の背景です。実際の質問は、sshd
のデバッグログをどこで見つけることができるかということです。さらに失敗している?
私が知っているように、Mac OSにはすでにsshd
がインストールされており、launchd
を使用して管理し、sshd -E /var/log/sshd.log
でデバッグログを出力する方法を知っていますが、/etc/ssh/sshd_config
設定と2行あります。
#SyslogFacility AUTH
#LogLevel INFO
これらの2行はデバッグモードの設定に使用されると思います。その後、#
を削除し、LogLevel
をDEBUG3
に設定してからsshd
を再起動しました。
$ launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
$ launchctl load -w /System/Library/LaunchDaemons/ssh.plist
そして、/etc/syslog.conf
でログパスを設定します。
auth.*<tab>/var/log/sshd.log
<tab>
はここでタブ文字を意味し、設定を再読み込みします:
$ killall -HUP syslogd
しかし、sshd.log
を実行したときに、/var/log
ファイルがssh localhost
フォルダーに見つかりません。 /etc/asl.log
の設定も試みました:
> /var/log/sshd.log format=raw
? [= Facility auth] file sshd.log
そして結果は同じでした、誰かが私を助けることができますか?
/var/log/system.logにあります。 「sshd」でフィルタリングする方が良い:
cat /var/log/system.log | grep sshd
アップルは、いつものように、車輪を再発明することを決めました。
スーパーユーザーウィンドウ内
# log config --mode "level:debug" --subsystem com.openssh.sshd
# log stream --level debug 2>&1 | tee /tmp/logs.out
別のウィンドウで
$ ssh localhost
$ exit
スーパーユーザーウィンドウに戻る
^C (interrupt)
# grep sshd /tmp/logs.out
2019-01-11 08:53:38.991639-0500 0x17faa85 Debug 0x0 37284 sshd: (libsystem_network.dylib) sa_dst_compare_internal <private>@0 < <private>@0
2019-01-11 08:53:38.992451-0500 0xb47b5b Debug 0x0 57066 socketfilterfw: (Security) [com.Apple.securityd:unixio] open(/usr/sbin/sshd,0x0,0x1b6) = 12
...
...
スーパーユーザーウィンドウで、デフォルトのsshdロギングを復元
# log config --mode "level:default" --subsystem com.openssh.sshd
これを試して
cp /System/Library/LaunchDaemons/ssh.plist /Library/LaunchDaemons/ssh.plist
それから
vi /Library/LaunchDaemons/ssh.plist
次に示すように、-Eを追加します
<array>
<string>/usr/sbin/sshd</string>
<string>-i</string>
<string>-E</string>
<string>/var/log/system.log</string>
</array>
最後にsshdを再起動すると、/ var/log/system.logにsshdログが表示されます。
launchctl unload /System/Library/LaunchDaemons/ssh.plist && launchctl load -w /Library/LaunchDaemons/ssh.plist
また、さらにデバッグしたいsshの問題があり、sshdのデバッグログを通常の場所に表示する方法を見つけることができませんでした。 /System/Library/LaunchDaemons/ssh.plist
ファイルを編集して-E <log file location>
パラメーター(/tmp/sshd.logなど)を追加することに頼りました。 Log_Levelを変更するために/etc/ssh/sshd_config
も編集しました。これらの変更により、指定されたログファイルでより詳細なログを表示できました。
私はMacOSの経験があまりないので、これを設定するためのより正しい方法があると確信していますが、より良いアプローチがないため、探しているログがありました。
Appleの 開発者Webサイト によると、macOS 10.12以降ではロギングの動作が変更されています。
重要:
統合ログは、iOS 10.0以降、macOS 10.12以降、tvOS 10.0以降、watchOS 3.0以降で使用でき、ASL(Apple System Logger)およびSyslog APIに優先します。これまで、ログメッセージは/etc/system.logなどのディスク上の特定の場所に書き込まれていました。統合ログシステムは、テキストベースのログファイルに書き込むのではなく、メッセージをメモリとデータストアに保存します。
残念ながら、誰かがメモリまたはこの神秘的な「データストア」からログエントリを抽出するための非常に巧妙な方法を考え出さない限り、私たちはSOL:/
いくつかのsshdログインがあります
/var/log/system.log
例えば
Apr 26 19:00:11 mac-de-mamie com.Apple.xpc.launchd[1] (com.openssh.sshd.7AAF2A76-3475-4D2A-9EEC-B9624143F2C2[535]): Service exited with abnormal code: 1
あまり有益ではありません。もっと入手できるかどうか疑問です。 sshd_configのLogLevel VERBOSE
およびLogLevel DEBUG3
は役に立ちません。
Man sshd_configによると:「DEBUGレベルでのログ記録はユーザーのプライバシーに違反するため、お勧めしません。」
ちなみに、launchctlではなく、システム設定の共有でsshdを再起動し、リモートログインにチェックを入れました。
そこに、私はオプションに気づいた:アクセスを許可する...
この設定は/ etc/ssh/sshd_configの外側にあると思われます(確認は簡単ですが、時間がありません)。
Mac OS XはUnixではないことに注意してください。Apple開発者は、コマンドラインユーザーに気を付けずに、舞台裏で多くの奇妙なことを行うことができます。