yu nkt’s blog

nkty blog

I'm an enterprise software and system architecture. This site dedicates sharing knowledge and know-how about system architecture with me and readers.

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機能を参照している事が分かりました。 どうやら、これが問題の原因のようです。

対策

WindowsSSH機能をオフにして、CygwinでOpensshを入れましょう。

Windows 10なら、スタートキー+Xを押した後「アプリと機能」を選択し、「オプション機能の管理」をクリック。 OpenSSHクライアントがあればアンインストールです。OpenSSHサーバーもアンインストールしておきましょう。関係あるか分かりませんが。

次に、CygwinにOpenSSHを追加です。cyg-getを導入していたら、コマンドプロンプトを開いて、以下を入力するだけ。

cyg-get openssh

cyg-getの導入方法は、こちらの記事参照。

yunkt.hatenablog.com

これで、再び、SSHログインしたら行けました。