Ubuntu 10.04.4 LTS
ユーザー「sam」をchrootしようとしています。そこにあるすべての記事によると、これはうまくいくはずですが、どうやら私はまだ何か間違ったことをしています。
ユーザー:
sam:x:1005:1006::/home/sam:/bin/false
/ etc/ssh/sshd_configを次のように変更しました(ファイルの下部):
#Subsystem sftp /usr/lib/openssh/sftp-server
# CHROOT JAIL
Subsystem sftp internal-sftp
Match group users
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
ユーザーグループにsamを追加しました。
$groups sam
sam : sam users
Samのホームフォルダーのアクセス許可を変更しました。
$ ls -la /home/sam
drwxr-xr-x 11 root root 4096 Sep 23 16:12 .
drwxr-xr-x 8 root root 4096 Sep 22 16:29 ..
drwxr-xr-x 2 sam users 4096 Sep 23 16:10 awstats
drwxr-xr-x 3 sam users 4096 Sep 23 16:10 etc
...
drwxr-xr-x 2 sam users 4096 Sep 23 16:10 homes
drwxr-x--- 3 sam users 4096 Sep 23 16:10 public_html
Sshを再起動したところ、samはSFTPでログインできません。セッションが作成されますが、すぐに閉じられます:
Sep 24 12:55:15 ... sshd[9917]: Accepted password for sam from ...
Sep 24 12:55:15 ... sshd[9917]: pam_unix(sshd:session): session opened for user sam by (uid=0)
Sep 24 12:55:16 ... sshd[9928]: subsystem request for sftp
Sep 24 12:55:17 ... sshd[9917]: pam_unix(sshd:session): session closed for user sam
サイバーダックは言うUnexpected end of sftp stream.
および他のクライアントが同様のエラーを出します。
私は何を忘れましたか/何が間違っていますか?
ありがとう!
編集する
OpenSSHメーリングリストに連絡した後でも、それを機能させることができなかったので、サーバー全体をリセットすることにしました(幸い、これは実行可能なオプションでした)。それは今働いています。
ジャウメの答えは非常にいいですが、結局私を助けることができませんでした。 OpenSSHメーリングリストを試しましたが、うまくいきませんでした。私はサーバー全体をリセットすることになりましたが、それでもまだ幸運でした。現在は完全に機能しています。
あなたの設定は間違いなく良さそうです。問題がどこにあるかを見つけられるかどうか見てみましょう。
OpenSSHバージョンがChrootDirectory
をサポートしていることを確認してください:
ChrootDirectory
キーワードのサポートがopenSSHバージョン4.8p1に追加されました( http://www.debian-administration.org/articles/59 )。少なくともそのバージョンがインストールされていることを確認します。
dpkg --list openssh-server
[ http://releases.ubuntu.com/lucid/ubuntu-10.04.4-server-AMD64.list)によると、これはおそらく原因ではありません openssh -serverのバージョンは5.3p1]です
SFTPをローカルでテストします。
Ubuntuコンピューターのターミナルに入力します。
sftp sam@localhost
ログインできるかどうかを確認します(尋ねられたらsamのパスワードを入力する必要があります)。動作する場合は、Cyberduckの構成に問題がある可能性があります。
ログインできない場合は、chrootなしでSFTPを試してください。
ChrootなしでローカルにSFTPをテストします。
接頭辞:
Match group users
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
#
を使用してコメント化し、sshd(Sudo service ssh restart
)を再起動して、次のように入力します。
sftp sam@localhost
プロンプトが表示されたらパスワードを入力し、ログインできるかどうかを確認します。ログインできる場合は、次のようにchroot構成のトラブルシューティングを行います。詳細な出力を表示するには、コマンドsftp -vvv sam@localhost
を使用してステップ2を再試行します。 LogLevel VERBOSE
を/etc/ssh/sshd_config
に追加してsshd
を再起動することにより、sshd
のログレベルを上げることもできます。うまくいけば、コンソールまたは/var/log/auth.log
に明らかなものが表示されます。
ログインできない場合は、SSHを試してください。
ローカルでSSHをテストします。
SFTPには有効なSSHが必要なので、samのシェルを/ bin/bashに変更します。
Sudo usermod -s /bin/bash sam
そして試してください:
ssh sam@localhost
尋ねられたら、samのパスワードを入力します。ログインできる場合は、3)で説明されているように詳細度を上げて問題を見つけてください(sftp -vvv sam@localhost
のLogLevel VERBOSE
および/etc/ssh/sshd_config
)。別の可能性は、シェルの初期化がsftpクライアントを混乱させることです( http://www.openssh.org/faq.html#2.9 ):
2.9-接続時にsftp/scpが失敗しますが、sshは問題ありません。
非インタラクティブセッションの出力を生成するシェルの初期化(.profile、.bashrc、.cshrcなど)がある場合、接続時にsftpやscpが失敗する可能性があります。この出力は、sftp/scpクライアントを混乱させます。シェルがこれを実行しているかどうかを確認するには、次のコマンドを実行します。
ssh yourhost /usr/bin/true
上記のコマンドで出力が生成された場合は、シェルの初期化を変更する必要があります。
ログインできない場合は、ssh root@localhost
をお試しください。どちらも動作しない場合は、サーバーのsshd
に問題があります。冗長性を増やし(LogLevel VERBOSE
の/etc/ssh/sshd_config
)、sshd
を再起動して/var/log/auth.log
を熟読してください。答えはおそらくそこにあります。
Centos 7-私は同じ問題を抱えていました-私はそれを診断するためにSunの下ですべてを試しました-最終的に '/ etc/ssh/sshd_conf'のsftpサブシステムを変更し、sshd(service sshd restart
)と問題が修正されました:
から:
#Subsystem sftp /usr/libexec/openssh/sftp-server
へ:
Subsystem sftp internal-sftp
なぜ2つの実装が提供されるのかわかりません
同じ問題があり、chroot-dirを所有者ルートとグループルートに設定することで解決しました。
chown root:root chroot-dir