まず、はい、こことstackoverflowで同様の質問と回答を読みました。特に明確な結果が出ないようで、また質問をさせていただきました。
私は最新のDebian Busterを使用しており、端末でGitHubへのアクセスを設定しようとしています。 SSH接続を確立するために公式GitHubウェブサイトの手順に従いました。ここそしてここ。
user@home-machine ~ $ sudo ssh-keygen -t ed25519 -C "my@email"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/ed25519):
Enter passphrase (empty for no passphrase): [I don't use passphrase]
Enter same passphrase again:
Your identification has been saved in /root/.ssh/ed25519.
Your public key has been saved in /root/.ssh/ed25519.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx my@email
The key's randomart image is:
+--[ED25519 256]--+
xxxxxxxxxxxxxxxxxxx
+----[SHA256]-----+
user@home-machine ~ $ eval "$(ssh-agent -s)"
Agent pid 2864
user@home-machine ~ $ ssh-add ~/.ssh/id_ed25519
/home/user/.ssh/id_ed25519: No such file or directory
user@home-machine ~ $ sudo ssh-add ~/.ssh/id_ed25519
#here is me being stupid and not seeing the correct path, bu I amended the mistake below
user@home-machine ~ $ sudo ssh-add root/.ssh/id_ed25519
[sudo] password for user:
Could not open a connection to your authentication agent.
なぜ動作しないのですか?私は何が間違っていましたか?申し訳ありません。私はLinuxとgitを学んでいますが、何かが欠けている可能性があります。ご協力ありがとうございます。
編集する: 次のコマンドを実行してみてください。
debtop@DebTop:~$ echo $SSH_AGENT_PID
2864
debtop@DebTop:~$ echo $SSH_AUTH_SOCK
/tmp/ssh-wpXiIKBOY4x7/agent.2863
debtop@DebTop:~$ eval$(ssh-agent -s)
bash: evalSSH_AUTH_SOCK=/tmp/ssh-yUWON3uD5kT5/agent.4242;: File or directory doesn't exist
答え1
user@home-machine ~ $ eval "$(ssh-agent -s)"
Agent pid 2864
ssh-agent
ここではで始まりますuser
。これはSSH_AUTH_SOCK
、他のSSHツールでプロキシのUnixソケットを見つけるために使用される環境変数を初期化します。
user@home-machine ~ $ sudo ssh-add root/.ssh/id_ed25519
[sudo] password for user:
Could not open a connection to your authentication agent.
ssh-add
ここでは で呼び出しますroot
。 sudoを介してsudo
渡すように明示的に構成していない場合SSH_AUTH_SOCK
移行されません。そのroot
環境。
環境変数がないと、ソケットはランダムに名前付きのサブディレクトリ(通常は)にあるため、ssh-add
コマンドはソケットを見つけることができません。ソケットとソケットがあるディレクトリもルートからのみアクセスできますが、通常ルートでは問題になりません。ssh-agent
/tmp/ssh-<random_alphabet_soup>/agent.<number>
user
エージェントが変換プロセス全体でそのユーザーのために特別に機能するようにするには、次のsudo
内容をファイルに追加する必要があります/etc/sudoers
。
Defaults:user env_keep+=SSH_AUTH_SOCK
user
(もちろん、実際のユーザー名に変更してください。)
rootに変換を使用してすべてのユーザーに機能させるには、sudo
次のようにします。
Defaults>root env_keep+=SSH_AUTH_SOCK
答え2
すべてのキーを削除し、プロセス全体を再試行しました。以下のようにキーなしで作成すると機能しますsudo
。
user@home-machine ~ $ ssh-keygen -t ed25519 -C "my@email"
ヒントをくれた@Pankiに感謝します。私がなぜsudo
鍵を作ったのか覚えていません。