セキュリティ対策をいろいろやっているLinuxサーバに対して、scpを使ってファイルを転送しようとしたところ、問題が発生した。
Windows上からTeraTermを使って転送を試みたところ、下記のエラーとなった。
SSH2_MSG_CHANNEL_OPEN_FAILURE を受信しました.
チャネル[1]: 理由: administratively prohibited(1) メッセージ: openfailed
でも、他のLinux上からscpコマンドでコピーすると、うまくいく。
謎なので、とりあえず、サーバ上のsshdをデバグモードで起動し、状況を確認してみる
# service sshd stop Shutting down the listening SSH daemon done # /usr/sbin/sshd -d debug1: sshd version OpenSSH_6.2, OpenSSL 0.9.8j-fips 07 Jan 2009 debug1: read PEM private key done: type RSA debug1: private host key: #0 type 1 RSA debug1: read PEM private key done: type DSA debug1: private host key: #1 type 2 DSA debug1: read PEM private key done: type ECDSA debug1: private host key: #2 type 3 ECDSA debug1: rexec_argv[0]='/usr/sbin/sshd' debug1: rexec_argv[1]='-d' Set /proc/self/oom_score_adj from 0 to -1000 <略> debug1: server_input_channel_open: ctype session rchan 1 win 131072 max 32768 debug1: input_session_request debug1: channel 1: new [server-session] debug1: session_open: channel 1 no more sessions debug1: session open failed, free channel 1 debug1: channel 1: free: server-session, nchannels 2 debug1: server_input_channel_open: failure session
ファイル転送用の追加セッションを作ろうとしたところで「no more sessions」というメッセージで作成に失敗している。
/etc/ssh/sshd_configを確認すると「MaxSessions 1」と設定されていた。
このため、「MaxSessions 2」に変更し、sshdを再起動したところ、TeraTermからもSCPでファイルコピーが行えるようになった。