web-dev-qa-db-ja.com

Bashスクリプトを介して秘密キーを使用してSSHに接続できない

そもそも、これが痛々しいほど明白で些細な問題であるかどうかをお詫びします。私はまだlinux/unixの詳細を学んでいます。

ログインするためにsshと秘密鍵を介したアクセスを必要とするいくつかのサーバーを使用しています。したがって、コマンドは次のようになります。

ssh -i /path/to/key.pem [email protected]

私は自分の呼び出しaccessを使用できるbashスクリプトを作成し、ログインするサーバーを制御するために続く引数の基本的なswitchステートメントを持っています。たとえば、access server1は適切なsshコマンドを発行してserver1にログインします。

問題

ssh呼び出しがハングアップするだけで、SIGINTを受け入れない空のターミナルが残ります(CtrlC)そして、私はそれを使用するためにもターミナルを終了して再度開く必要があります。

私の知る限り、これは秘密鍵のアクセス許可の問題かもしれません。現在、その権限は600です。これを644に変更すると、権限が開きすぎてssh試行を終了するというエラーが表示されます。何かアドバイス?

4
Andrew
  1. このために作成されたssh_configがあり、ホストのエイリアスとキーを指定して、bashスクリプトなどのハラキリを作成せずに保存できます。基本的には、次の形式で~/.ssh/configに保存されます。

    Host host1
      Hostname 000.000.000.000
      User user
      IdentityFile /path/to/key.pem
    

    そして、あなたは単に呼び出すことができます

    ssh Host1
    

    000.000.000.000にアクセスするには

  2. 本当に効果的になりたい、さらに短いショートカットが必要な場合は、bash aliasがbashスクリプトよりも適しています。

    alias access="ssh -i /path/to/key.pem [email protected]"
    
  3. 本当にbashスクリプトを使用したい場合は、-ttオプションを使用して、sshがリモートサーバーにTTYを割り当てるように強制する必要があります。

    ssh -tti /path/to/key.pem [email protected]
    

その他のヒントについては、マニュアルページでsshおよびssh_configを参照できます。

6
Jakuje

私は通常、パスワード認証をサーバーで利用できるようにし(仮想化を使用していると仮定して、コンソール経由)、次にssh-copy-id soandso@serverを使用してキーベースの認証を実行します。ほとんどの場合、(マシン上の)公開鍵を使用して(リモートサーバー上の)秘密鍵に対して認証していることに注意してください。

公開鍵の標準アクセス許可は644である必要がありますが、私の知る限り、秘密鍵は700である必要があります。問題がパブキーの権限ではないことを確認しますか?

2つのことを確認することをお勧めします。最初に、上記で行ったssh接続文字列を試し、オプションとして-vまたは-vvvを追加します。これは、これがどこで壊れているかについてあなたに良い考えを与えるはずです。次に、サーバー上のsshd構成ファイル(/etc/ssh/sshd_config)を調べて、使用しようとしている接続プロトコルが有効になっていることを確認します。これは、これらの2行がyesに設定されていることを確認するのと同じくらい簡単です。

RSAAuthentication yes PubkeyAuthentication yes

がんばって!

0
izzy.artistic