LoginSignup
7
0

More than 1 year has passed since last update.

SSHエージェントフォワーディングして別のユーザーで鍵を使いたかったけどだめだった

Last updated at Posted at 2022-12-31

はじめに

明けましておめでとうございます。

SSHエージェントフォワーディングをして、接続先のサーバーでユーザーを切り替え、git cloneなどをしたかった。
結論、sudoでなら鍵を使えたが、切り替えたユーザーでは使えなかったので、記録として残しておく。(代わりにPersonal Access Tokenを使うことにした)

やりたかったこと

# user1にSSH
$ ssh user1@192.168.0.0 -A

# user2に切り替え
$ whoami
user1
$ sudo -i -u user2

# user2でgit clone
$ whoami
user2
$ git clone git@github.com:ohakutsu/repository_name.git

なぜ鍵を使えないのか

user1のSSH_AUTH_SOCKがuser2に引き継がれていない

$ whoami
user1
$ env | grep 'SSH_AUTH_SOCK'
SSH_AUTH_SOCK=/path/to/socket

# user2に切り替え
$ sudo -i -u user2
$ whoami
user2
$ env | grep 'SSH_AUTH_SOCK' # ない

env_keepを設定してSSH_AUTH_SOCKが引き継がれるようにしたが、

# 以下を追加
$ sudo visudo
Defaults env_keep += "SSH_AUTH_SOCK"

うまく動いていない。

$ sudo -i -u user2
$ whoami
user2

# 渡っていることを確認
$ env | grep 'SSH_AUTH_SOCK'
SSH_AUTH_SOCK=/path/to/socket

$ git clone git@github.com:ohakutsu/repository_name.git
Cloning into 'repository_name'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

ssh-agentに登録されている鍵を確認してみると、パーミッションに問題がありそう。

# user1
$ ssh-add -l
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

# user2
$ ssh-add -l
Error connecting to agent: Permission denied

見てみると、所有者がuser1になっているための様。

$ ls -la /tmp | grep 'ssh'
drwx------  2 user1      4096 Jan 1 00:00 ssh-XXXXXX

なので、以下のようにsudoでcloneなどはすることはできるが微妙な感じ。

$ whoami
user2
$ sudo git clone git@github.com:ohakutsu/repository_name.git

パーミッションを変えるのは怖いので諦めることにした(Personal Access Tokenを使うことにした)

Refs

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0