Gitを使用するのはこれが初めてで、ボックスに設定しようとしています。 GithubWebインターフェイスのプロファイルにキーを追加しました。接続しようとすると...:
max@linux-vwzy:~> ssh [email protected]
The authenticity of Host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is xx
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
PTY allocation request failed on channel 0
max@linux-vwzy:~> ssh-add ~/.ssh/id_rsa
Identity added: /home/max/.ssh/id_rsa (/home/max/.ssh/id_rsa)
max@linux-vwzy:~> ssh [email protected]
PTY allocation request failed on channel 0
なんらかのウェルカムメッセージが届くはずですが、そうではありません。
通常のターミナル環境でssh [email protected]
を実行すると、SSHクライアント(ローカルマシン上のsshプロセス)が疑似ターミナルを要求します(pty)サーバーから。
GitHubは常にptyの割り当てを拒否してきました。
古いバージョン(5.6より前)のOpenSSHsshは、サーバーがpty割り当て要求を拒否した場合、no-ptyモードに「フォールバック」します。
OpenSSHのsshの新しいバージョン(5.6から5.8)は、サーバーがpty割り当て要求を拒否すると中止します。
OpenSSHsshの最新バージョン(5.9以降)は、pty割り当てが自動的に行われた場合、前者のアクション(続行)を実行し、後者のアクション(中止)ptyの明示的な要求があった場合(-t
が指定されているかRequestTTY
がyes
/force
に等しい)。
-T
オプションを使用して、ssh(古いまたは新しい)にpty割り当ての要求を回避するように指示できます。
ssh -T [email protected]
次に、GitHubメッセージが表示されます。
こんにちは<ユーザー名>!認証に成功しましたが、GitHubはシェルアクセスを提供していません。
OpenSSH5.6リリース発表 から:
- Pty割り当て要求が失敗したときにチャネルを強制終了します。サーバーがpty割り当てを拒否した場合のスタッククライアントを修正しました(bz#1698)
bz#1698
は 「PortableOpenSSH」Bugzillaに記録されたレポート への参照のようです。
OpenSSH clientloop.c rev 1.234 のチェックインメッセージから:
tTY割り当てが失敗したときの動作を改善します。RequestTTY= autoモード(デフォルト)の場合、TTY割り当てエラーを致命的なものとして扱わず、ローカルTTYをクックモードに復元して続行します。これは、TTYを割り当てないデバイスではより適切です。
RequestTTYが「yes」または「force」に設定されている場合、TTYの割り当てに失敗すると致命的です。