![CentOS 7: bash を実行すると WinSCP 経由で接続できない](https://rvso.com/image/1558689/CentOS%207%3A%20bash%20%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%A8%20WinSCP%20%E7%B5%8C%E7%94%B1%E3%81%A7%E6%8E%A5%E7%B6%9A%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84.png)
私はルート権限を持つ VM (ESXi) 上で CentOS Server 7 を実行しています。ログイン直後に実行される bash スクリプト (/etc/profile.d/ ディレクトリ内) があります。ディレクトリ内に .sh ファイルを作成する前は、WinSCP 経由で VM に接続する際に問題はありませんでした。ファイルを作成してシステムを再起動した後、接続できなくなりました。OpenSSH がインストールされています。bash の実行によって接続がブロックされているようです。その後、コンソール経由で .sh ファイルを削除すると、接続が再び確立されます。これは CentOS の問題でしょうか? Ubuntu Server ではこの問題は発生していません。
発生するエラー:
SFTP プロトコルを初期化できません。ホストは SFTP サーバーを実行していますか?
何かアイデアはありますか?よろしくお願いします!
答え1
profile.d
スクリプトを見せていただいていないので、これは明らかに多少推測的なものです。しかし、何らかのユーザー操作が必要なため、スクリプトは含まれていない可能性が高いです。
プロファイルは、非対話型セッションでも実行する必要があるもの専用に予約する必要があります。
対話型機能の適切な場所は、おそらくログイン スクリプト内ではありませんが、たとえば次のような機能を使用すると、$HOME/.bash_profile
少なくとも非対話型セッションで損害が発生するのを防ぐことができます。
case $- in *i*) invoke your script here;; esac
すでに をお持ちの場合は、 2 つ目のステートメントを追加する代わりに、修正できるステートメントが.bash_profile
すでに含まれている可能性があります。case $-