Yoshidome-Mitsushio laboratory

  •  
  • お問い合わせ

とあるアドミの管理目録インデックス
Anguish of a server administrator

   

1.CentOS7で新サーバーを構築後、SFTPやWinSCPで接続できない

CentOS6の学科ホームページ用の旧サーバーはWebを頼りに自力で構築したのですが、
セキュリティ関係の設定が甘く、毎回大学のセキュリティチェックで引っかかっていました。

そこで、今回は学科に予算を申請して業者さんに構築を委託しました。

しかし、基盤センターの提供しているCentOS7のデフォルト設定がしっかりしているのか、
あるいは業者さんがセキュリティを堅めに構築してくれたのかは分かりませんが、
SFTPやWinSCPでのログインができなくなっていました
(なお、依頼時にセキュリティ堅め、Webコンテンツの転送はFTP
 としか伝えていなかったので、
業者さんに非は全くないことを申し添えておきます)

WinSCPでSFTP接続を行ったときに表示される
「プロトコルを初期化できません sftpサーバが起動していますか」を頼りに検索すると、
ゆーのさんのブログ「昨日知ったこと」で、次の記事が引っかかりました。

『「 WinSCP において、「SFTPプロトコルを初期化できません。」
などと言われて接続できない問題を調べる修行


WinSCPで接続したときのエラーメッセージ

『開始時のメッセージの省略エラー。
選択したシェルはWinSCP互換ではないかも知れません
(BASHをお勧めします)。』


についても言及してあり、同じ症状について述べられていました。

ブログの記述内容を元にこの状態を説明すると、

ログイン時に実行されるスクリプトのシェルが
「nologin」になっている
だそうです。

なるほど!わからん!

知識が解説を理解できるレベルでないこと痛感しつつ
解説とエラーメッセージを合わせて考えると、
ログイン時に自動実行されるコマンドのためのプラットフォーム
(シェル)が、「Bash」になっておらず、
「nologin」になっているのではないか?

という問題がなんとなく見えてきました。

「Bash」とか「シェル」と行ったキーワードで検索すると
プログラムメモ」というサイトの
(sshなどの)ログインシェルを確認し、変更する
という記事を見つけました。

試しにログインシェルを確認するコマンドの
「cat /etc/passwd」を実行すると、
全てのユーザーのログインシェルが

[ユーザー名]:x:1234:1234::/home/[ユーザー名]:/sbin/nologin

となっていました。

推測が当たっているようなので、
まずは変更したいシェルコマンドのパスを調べる

「whereis bash」

を実行し、bashの格納されているパスを取得しました。

「bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz」

表示された情報の赤字の部分が必要なパスになります。

最後にログインシェルを変更するわけですが、
参考にしたのは「エンジニアの入り口」の
chshコマンドについて詳しくまとめました 【Linuxコマンド集】
で、コマンドは、

「csch -s /usr/bin/bash [ユーザー名]

(csch [ユーザー名]と入力してもOK、
その場合bashへのパス /usr/bin/bashを聞いてくる)

です。これを実行すると、

[ユーザー名]のシェルを変更します。
シェルを変更しました。

と表示されました。

最後に再び「cat /ete/passwd」を実行して、
設定したユーザーのシェルが「/usr/bin/bash」に変更されていることを確認し、
WinSCPでSFTPやSCPでログインを行ない、動作の確認ができました。