GNU/Linux >> Linux の 問題 >  >> Linux

SSH2 から OpenSSH にパスワードなしで SSH および SCP を実行する方法

以前の記事では、ssh キー ベースの認証をセットアップして、パスワードなしで ssh と scp を実行する方法について説明しました。次の 3 つのシナリオ:

<オール>
  • OpenSSH から OpenSSH へ
  • OpenSSH から SSH2 へ
  • SSH2 から SSH2 へ
  • この記事では、SSH2 (ローカル ホスト) から OpenSSH (リモート ホスト) にパスワードなしで ssh と scp を実行する方法を説明します。

    1.ローカル ホストとリモート ホストの SSH バージョンを特定する

    この例では、local-host は SSH2 を実行しており、remote-host は OpenSSH を実行しています。

    [local-host]$ ssh -V
    ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu
    
    [remote-host]$ ssh -V
    OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006

    2. ssh-keygen2 を使用して、ローカル ホストで SSH2 認証キー ペアを生成します

    SSH2 では、以下に示すように、ssh-keygen は ssh-keygen2 へのソフトリンクになります。

    [local-host]$ ls -l /usr/local/bin/ssh-keygen
    lrwxrwxrwx  1 root root 11 Jul 31  2006 /usr/local/bin/ssh-keygen -> ssh-keygen2
    
    [local-host]$ ssh-keygen
    Generating 2048-bit dsa key pair
    7 o.oOo..oOo.o
    Key generated.
    2048-bit dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700
    Passphrase : [Enter the password here]
    Again      :
    Private key saved to /home/jsmith/.ssh2/id_dsa_2048_a
    Public key saved to /home/jsmith/.ssh2/id_dsa_2048_a.pub

    公開鍵と秘密鍵は、ホーム ディレクトリの下の .ssh2 フォルダーに格納されます。この例では、/home/jsmith/.ssh2 の下にあります。

    秘密鍵は誰とも共有しないでください。

    デフォルトでは ssh-keygen2 DSA (デジタル署名アルゴリズム) 鍵ペアを生成します。以下に示すように、RSA キー ペアを生成することもできます。

    [local-host]$ ssh-keygen -t rsa

    3. SSH2 公開鍵をローカル ホストから OpenSSH を実行しているリモート ホストにコピーします

    local-host:/home/jsmith/.ssh2/id_dsa_2048_a.pub ファイルを remote-host:/home/jsmith/.ssh/id_dsa_1024_a.pub にコピーします。リモートホストで vi /home/jsmith/.ssh/id_dsa_1024_b.pub を実行し、ローカルホストから公開鍵の内容をコピーします。

    [remote-host]$ vi /home/jsmith/.ssh/id_dsa_1024_a.pub
    ---- BEGIN SSH2 PUBLIC KEY ----
    Subject: jsmith
    Comment: "2048-bit dsa, jsmith@local-host Sun Oct 19 2008 14:49:42 -070\0"
    7ZTVd7H63VyVqBIqfmEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFDG0VQESj
    5iGSvMtmBBj8wQxGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpghC97mIx
    tIxJA7ZTVd7H63VIqmzlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8COWQs
    t6jsP6RG/WrpHi5iGSvMtmBBj8wQGHddexkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnfLL7T
    RTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcdXFY
    2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQci
    dko1pKuV1W9rOK3y19A2J2N6rSdWYb7Zyzw8Gr7kTMWX1TP5WhRGCUhNRYnjI+4wgZIZdC
    lfGdp8MGI3HBg9CAr702BOzRTMnW0aqsGjrbhcwhWaDgRymhBh++nGAhHxeWn4ApJ8F6kT
    8HaAm3dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGi
    PQTrt9NAzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA==
    ---- END SSH2 PUBLIC KEY ----

    4.ローカル ホストで、~/.ssh2/identification ファイルを作成します

    ローカル ホストに次のファイルを作成します。

    $ vim ~/.ssh2/identification
    IdKey id_dsa_2048_a
    

    5.リモートホストで、SSH2 公開鍵を OpenSSH 公開鍵に変換します

    これは、OpenSSH を実行しているリモート ホストで実行する必要があります。 OpenSSH と SSH2 形式の間でキーを相互に変換できるのは OpenSSH だけです。

    [remote-host]$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > \
    ~/.ssh/id_dsa_1024_a_openssh.pub

    以下に示すように、変換された OpenSSH 公開鍵を ~/.ssh/id_dsa_1024_a_openssh.pub ファイルから authorized_keys ファイルにコピーします。

    [remote-host]$ vi ~/.ssh/authorized_keys
    ssh-dss 5iGSvMtmBBj8wQdegAEBALVa6VKtALZkydlOiPasikEQfujH07tjW+OffaRufFD
    G0VQESjq+YlVTWcXxStz0xGlvJ/dayVqBvvHzMao8bwGC+HFUtH1un7uyIEwOqU1fNzEpgh
    C97s143S8zBcTAGtdegte3IqmlLbp/ZCd6bcJLvZEepMz96nlNB4NJ5UYIfdgXNhf/TrJD8
    COWQst6jsP6RG/WrpHiI4QVDM6tZVZ4CnGjm1QPkRnf/o5YMFJZRo4Iwc7+bgYrIyywBZnf
    LL7TRTk9TBfWzgJHy/y1tTtCMvVooWvFZbG5AiV3de63MxBaD0o68SASyXZzVM+MabXhjcd
    XFY2vjq2vJxOzunEAAAAVAOTeOzDCnj3K5iGSvMtmBBj8wQGHAAABAA38sGpHEfSxLx5MjQ
    dFYXpHCaZ/xuKPXr4DFugGl8MRDU8TwioNE9kRi0Ko/kB5LTHuGhMPHGshMJeVGiPQTrt9N
    AzgYyJeT9RB9VZadgElMvQ9S0+fo6ipOA==

    6.リモートホストで .ssh ディレクトリへの適切な権限を設定

    openSSH を実行しているリモート ホストで、次の権限を設定してください。これがないと、ssh であらゆる種類の問題が発生します。

    $ chmod 755 ~
    $ chmod 755 ~/.ssh
    $ chmod 644 ~/.ssh/authorized_keys
    

    7. SSH キー認証を使用して、ローカル ホストからリモート ホストにログインします

    以下に示すように、ローカル ホスト (SSH2) からリモート ホスト (OpenSSH) への ssh を実行して、鍵ベースの認証が正しく機能するかどうかを確認します。

    [local-host]$ [You are on local-host here]
    
    [local-host]$ ssh -l jsmith remote-host
    Host key not found from database.
    Key fingerprint:
    bitaz-navun-gogus-mptop-ljilk-qwlem-ftrtm-llmak-topok-zuiof-bnmix
    You can get a public key's fingerprint by running
    % ssh-keygen -F publickey.pub on the keyfile.
    Are you sure you want to continue connecting (yes/no)? yes
    Host key saved to /home/jsmith/.ssh2/hostkeys/key_22_remote-host.pub
    host key for remote-host, accepted by jsmith Sun Oct 19 2008 15:06:42 -0700
    
    Passphrase for key "/home/jsmith/.ssh2/id_dsa_2048_a" with comment "2048-bit
    dsa, jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700":[Enter password]
    Last login: Sun Oct 19 14:01:48 2008 from 192.168.1.10
    
    [remote-host]$ [You are on remote-host here]


    注意 :ローカル ホストからリモート ホストへの ssh または scp の実行中に次のエラーが発生した場合は、SSH でアルゴリズム ネゴシエーションに失敗した問題を解決する方法を参照して、この問題を解決してください。

    [local-host]$ ssh -l jsmith remote-host
    warning: Authentication failed.
    Disconnected; key exchange or algorithm negotiation failed
    (Algorithm negotiation failed.)


    パスワードを入力せずに ssh と scp を実行するには、次の 2 つの方法があります:

    <オール>
  • パスフレーズなし: キー ペアの作成中は、パスフレーズを空のままにします。このオプションは、自動バッチ処理に使用します。例えばマシン間でファイルをコピーするために cron ジョブを実行している場合、これは適切なオプションです。このメソッドの次のステップはスキップできます。
  • パスフレーズと SSH エージェントを使用する :コマンドラインから対話的に ssh と scp を使用していて、ssh または scp を実行するたびにパスワードを使用したくない場合は、前のオプション (パスフレーズなし) をお勧めしません。 ssh キー ベースの認証におけるセキュリティ レベル。代わりに、キー ペアの作成時にパスフレーズを使用し、SSH エージェントを使用して ssh と scp を実行します。以下の手順で説明するように、パスワードを毎回入力する必要はありません。
  • 8.ローカル ホストで SSH エージェントを起動する

    SSH エージェントはバックグラウンドで実行され、秘密鍵を保持し、パスフレーズを何度も入力することなく ssh と scp を実行します。

    [local-host]$ ssh-agent $SHELL

    9.ローカル ホスト上の SSH エージェントに秘密鍵をロードします

    [local-host]$ ssh-add
    
    Adding identity: /home/jsmith/.ssh2/id_dsa_2048_a.pub
    Need passphrase for /home/jsmith/.ssh2/id_dsa_2048_a (2048-bit dsa,
    jsmith@local-host, Sun Oct 19 2008 14:49:42 -0700).
    Enter passphrase:[Enter your passphrase here]

    10.パスワードを入力せずに、ローカル ホストからリモート ホームへの SSH または SCP を実行します

    [local-host]$ [You are on local-host here]
    
    [local-host]$ ssh -l jsmith remote-host
    Last login: Sun Oct 19 14:20:48 2008 from 192.168.1.10
    
    [remote-host]$ [You are on remote-host here]


    この記事が気に入ったら、delicious and Stumble it で共有してください .


    Linux
    1. UNIX / Linux で SSH を使用して Rsync をセットアップする方法 (パスワードなしの rsync)

    2. Linux でパスワード プロンプトを中断せずに SCP を実行する方法

    3. SSH パスワードを再入力せずに「git pull」を実行するにはどうすればよいですか?

    1. パスワードなしでRHEL7サーバーにSSHログイン

    2. パスワードなしでSSHログインを設定する方法

    3. SSHを使用してサーバーからファイルをダウンロードするには?

    1. Ssh –OpensshキーとPuttyキーの違いは?

    2. SSLキーからパスワードを削除する方法

    3. openSSH から SSH2 への SSH Key ベースの認証設定