そもそも、これが痛々しいほど明白で些細な問題であるかどうかをお詫びします。私はまだlinux/unixの詳細を学んでいます。
ログインするためにsshと秘密鍵を介したアクセスを必要とするいくつかのサーバーを使用しています。したがって、コマンドは次のようになります。
ssh -i /path/to/key.pem [email protected]
私は自分の呼び出しaccess
を使用できるbashスクリプトを作成し、ログインするサーバーを制御するために続く引数の基本的なswitchステートメントを持っています。たとえば、access server1
は適切なssh
コマンドを発行してserver1にログインします。
問題
ssh
呼び出しがハングアップするだけで、SIGINT
を受け入れない空のターミナルが残ります(Ctrl + C)そして、私はそれを使用するためにもターミナルを終了して再度開く必要があります。
私の知る限り、これは秘密鍵のアクセス許可の問題かもしれません。現在、その権限は600
です。これを644
に変更すると、権限が開きすぎてssh
試行を終了するというエラーが表示されます。何かアドバイス?
このために作成された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
にアクセスするには
本当に効果的になりたい、さらに短いショートカットが必要な場合は、bash alias
がbashスクリプトよりも適しています。
alias access="ssh -i /path/to/key.pem [email protected]"
本当にbashスクリプトを使用したい場合は、-tt
オプションを使用して、sshがリモートサーバーにTTYを割り当てるように強制する必要があります。
ssh -tti /path/to/key.pem [email protected]
その他のヒントについては、マニュアルページでssh
およびssh_config
を参照できます。
私は通常、パスワード認証をサーバーで利用できるようにし(仮想化を使用していると仮定して、コンソール経由)、次にssh-copy-id soandso@server
を使用してキーベースの認証を実行します。ほとんどの場合、(マシン上の)公開鍵を使用して(リモートサーバー上の)秘密鍵に対して認証していることに注意してください。
公開鍵の標準アクセス許可は644
である必要がありますが、私の知る限り、秘密鍵は700
である必要があります。問題がパブキーの権限ではないことを確認しますか?
2つのことを確認することをお勧めします。最初に、上記で行ったssh接続文字列を試し、オプションとして-vまたは-vvvを追加します。これは、これがどこで壊れているかについてあなたに良い考えを与えるはずです。次に、サーバー上のsshd構成ファイル(/etc/ssh/sshd_config
)を調べて、使用しようとしている接続プロトコルが有効になっていることを確認します。これは、これらの2行がyesに設定されていることを確認するのと同じくらい簡単です。
RSAAuthentication yes PubkeyAuthentication yes
がんばって!