Cygwinを導入してSSHログインに失敗したら
問題
今までGit Bashを使って、AWSとかにSSHログインしていましたが、ChocolateyでCygwinを導入し、それを使うことにしました。 そうしたところ、SSHでログイン出来なくなりました。
ssh -i hoge.pem centos@awsのIP Pseudo-terminal will not be allocated because stdin is not a terminal. (ここでコマンドが終了もせず…)
原因
疑似ターミナルは割り当てられませんよ。stdinはターミナルじゃないからね。
Linuxに詳しくないので、全体的に、は?なのです。 が、頑張って解釈するとしたら、
- SSHでログインした先でターミナルを利用したい
- その時に使うターミナルを疑似ターミナルと呼ぶ
- しかし、ローカル側の文字入力の受け口であるstdinがターミナルではないので、この疑似ターミナルの割り当てようがない
と言っているようです。
まだこの時点では、はっきりとは理解出来ないのですが、because以降の文言がとても気になります。 なぜターミナル(Cygwin)を使っているのに、stdinがターミナルじゃない、と怒られているのでしょうか。
どうも、このsshコマンドは、cygwinにインストールされたものではない気がしてきました。
そこで、which ssh
をしたところ、Windows内のSSH機能を参照している事が分かりました。
どうやら、これが問題の原因のようです。
対策
WindowsのSSH機能をオフにして、CygwinでOpensshを入れましょう。
Windows 10なら、スタートキー+Xを押した後「アプリと機能」を選択し、「オプション機能の管理」をクリック。 OpenSSHクライアントがあればアンインストールです。OpenSSHサーバーもアンインストールしておきましょう。関係あるか分かりませんが。
次に、CygwinにOpenSSHを追加です。cyg-getを導入していたら、コマンドプロンプトを開いて、以下を入力するだけ。
cyg-get openssh
cyg-getの導入方法は、こちらの記事参照。
これで、再び、SSHログインしたら行けました。