![Gitolite をインストールした後、ssh にログインできません。チャネル 0 で PTY 割り当て要求が失敗しました](https://rvso.com/image/1316779/Gitolite%20%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%9F%E5%BE%8C%E3%80%81ssh%20%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%200%20%E3%81%A7%20PTY%20%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E8%A6%81%E6%B1%82%E3%81%8C%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F.png)
以下の手順に従って、Synology DiskStation NAS に Gitolite をインストールしました。 http://www.bluevariant.com/2012/05/comprehensive-guide-git-gitolite-synology-diskstation/
gitolite をインストールできたことに気付きましたが、何らかの理由で「git」ユーザーを使用してインストールを実行できませんでした。ただし、「root」ユーザーとしてインストールを実行できました。
インストール後、ログアウトしました。しかし、今度は毎回ssh経由で再度ログインしようとしました: $ ssh root@iptonas
このエラーが発生しました: チャネル 0 で PTY 割り当て要求が失敗しました
どこかで、gitolite が SSH ログインを無効にすると読みました。他にシェルに戻るにはどうしたらいいでしょうか。
答え1
error: PTY allocation request failed on channel 0
完全に正常で、予想通りであり、ブロックも行われません(つまり、ssh 操作が実行されます)。
しかし、あなたはrootとしてインストールをしました。これは、特にssh Gitolite ページ:
Gitolite をインストールする場合、好むと好まざるとにかかわらず、あなたは「システム管理者」です。デフォルトの ssh モード (つまり、http モードではない) を使用している場合は、ssh は必須のスキルです。
時間をかけて、少なくともパスワードなしのアクセスが機能するのに十分なスキルを習得してください。
Gitoliteを理解する上で重要な点は、強制命令、対話型シェルを拒否し、すべてのコマンド (git コマンドを含む) を傍受して、Git リポジトリへのアクセス制御を強制できるようにします。
つまり、~root/.ssh/authorized_keys
ファイルに次の行が含まれています:
command="/devit_home/users/vobadm/gitpoc/ce7/gitolite/bin/gitolite-shell gitoliteadm",no-port-forwarding,no-X11-for warding,no-agent-forwarding,no-pty ssh-rsa AAAAB3N
no-port-forwarding
警告メッセージ「 」の原因は です。PTY allocation request failed on channel 0
ただし、これによって Gitolite 操作が適切に実行されるのが妨げられることはありません。
見る "gitolite はどのようにしてこの SSH マジックを使用するのでしょうか?「」。
sshの問題については、「SSH トラブルシューティング"
以外の方法でサーバーにアクセスし、の ssh
で始まる行を削除する必要があります。command
~root/.ssh/authorized_keys
Telnet を使用して gitolite のインストール プロセスをやり直す方法をご存知ですか?
ルートとしてログインしたら:
- ファイル内のコマンドで始まる行を削除します
~root/.ssh/authorized_keys
。 - ルート公開鍵が同じファイルに登録されていることを確認してください(
command=
先頭に ' ' が付いていないこと)。
これにより、SS 経由のルート アクセスが保証されます。
次に、最初にインストールをやり直しますsudo git
。
インストールを実行するときは 'git' を使用する必要があります。
まず、クライアント側でgit
秘密 SSH キーとgit.pub
公開キーを生成する必要があります。
サーバー上の公開キーをコピーします。その公開キーをコマンドに渡しますgitolite install
。
DiskStation> /volume1/homes/git/gitolite/install -ln
~git/bin
( 「システム パスのルート保護」ディレクトリの代わりにインストールをリンクするため/bin
)。
答え2
Gitolite はおそらく root として実行すべきではないことに同意します。私も同じ間違いを犯しました。役立つかもしれないので、追加情報を追加します。
SSH コマンドに次のフラグを追加することで、ターゲット マシンに root として SSH 接続することができました。
PreferredAuthentications=keyboard-interactive,password -o PubkeyAuthentication=no
もちろん、これはルート アカウントにパスワードが関連付けられていることを前提としています。Gitosis が SSH known_hosts ファイルを編集する方法により、秘密鍵で認証することはできませんが、上記のフラグを使用して優先認証を指定した場合、そのファイルは一切参照されません。