🔐

【Linux】SSH Keyを新しいPCに移動させる

に公開

SSH Keyを新しいPCに移行する方法

はじめに

研究室のPCが交換となり、Githubやクラスタへの接続のために設定していたSSH Keyをそのまま使う必要がありました。
今後の備忘録として記録しておきます。

概要

  1. 旧PCから新PCへSSH Key(秘密鍵・公開鍵)をコピー
  2. 新PCで~/.sshディレクトリを作成
  3. 新PCの~/.sshディレクトリにSSH Keyを保存
  4. SSH秘密鍵のパーミッションを変更
    chmod 600 ~/.ssh/id_rsa
    

詳細

1. 旧PCから新PCへSSH Key(秘密鍵・公開鍵)をコピー

旧PCの~/.sshディレクトリから、USBなどの外部メモリにSSH Keyをコピーします。

セキュリティの観点から、SSH秘密鍵をインターネット経由(メールやクラウドストレージ)で移動するのはやめましょう

GUIで操作する場合:

ファイルアプリでマウスでコピーします。
※ ファイルアプリの表示設定から、「隠しファイルを表示する」を選択することで、~/.sshディレクトリを表示することができます。

CUIで操作する場合:

こちらのコマンドでSSH Keyをコピーします。

cp ~/.ssh/id_rsa /media/usb/
cp ~/.ssh/id_rsa.pub /media/usb/

2. 新PCで~/.sshディレクトリを作成

SSH情報を置くディレクトリとして、~/.sshディレクトリをターミナルから作成します。
まずは、こちらのコマンドを入力して、ディレクトリが存在するか確認します。

ls -al ~/.ssh
  • ~/.sshディレクトリが存在する場合:ファイルの種類と権限の一覧が表示される
  • ~/.sshディレクトリが存在しない場合:下記のメッセージが表示される
    ls: 'home/{user_name}/.ssh' にアクセスできません: そのようなファイルやディレクトリはありません
    

~/.sshディレクトリが存在しない場合はこちらのコマンドで~/.sshディレクトリを作成します。

mkdir ~/.ssh

3. 新PCへSSH Keyを保存

1で外部媒体にコピーしたSSH Key(秘密鍵・公開鍵)を、2で作成した新PCの~/.sshディレクトリに保存します。

例えば、USBメモリから新PCの~/.sshディレクトリにコピーする場合:

cp /media/usb/id_rsa ~/.ssh/
cp /media/usb/id_rsa.pub ~/.ssh/

外部メモリを他人と使いまわす場合は、SSH秘密鍵の漏洩を防ぐため、新PCへの保存後は削除しましょう。

4. SSH秘密鍵のパーミッションを変更

このまま、GitなどでSSH Keyを使おうとすると、以下のような警告文が表示されます。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/Users/{user_name}/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: home/{user_name}/.ssh/id_rsa
Permission denied (publickey).

これは秘密鍵ファイルのパーミッションが他のユーザーにも読み取り可能な状態になっているためです。セキュリティ確保のため、以下のコマンドで秘密鍵のパーミッションを変更します:

chmod 600 ~/.ssh/id_rsa

これによりパーミッションが「600」(所有者のみ読み書き可能)に変更され、SSH 接続が可能になります。

まとめ

SSH Keyをコピーするだけでなく、アクセス権限の変更も必要な点に注意が必要でした。
SSH秘密鍵の取り扱いには十分注意しましょう。

最後までお読みいただきありがとうございました。

Discussion