パスワードを常に入力することなく、ssh経由でリモートにログインできるようにしたいのです。
- どのように設定しますか?
- パスワードなしのセッションを実行するには別のコマンドが必要ですか?
パスワードを常に入力することなく、ssh経由でリモートにログインできるようにしたいのです。
回答:
次のコマンドを実行します。
ssh-keygen
ssh-copy-id user@host
## or if your server uses custom port no:
ssh-copy-id "user@host -p 1234"
キーがコピーされたら、通常どおりマシンにsshします。
ssh user@host
これで、コマンドを実行した特定のマシンからパスワードを入力せずにログインできます。
not-marco@rinzwind-desktop:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/not-marco/.ssh/id_rsa):
Created directory '/home/not-marco/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/not-marco/.ssh/id_rsa.
Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub.
The key fingerprint is:
b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f not-marco@rinzwind-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|.o= . oo. |
|*B.+ . . |
|*=o . o . |
| = . = |
|. o S |
|E. |
| o |
| . |
| |
+-----------------+
not-marco@rinzwind-desktop:~$ ssh-copy-id not-marco@server
not-marco@server's password:
Now try logging into the machine, with "ssh 'not-marco@server'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
これは、すでにSSHを介してサーバーに正常に接続できることを前提としています。
パスワードを使用せずに自分を識別できるSSHキーペアを生成する必要があります。必要に応じて、パスコードでキーを保護することを選択できますが、これを空白のままにして、完全にパスワードなしのSSHアクセスを許可できます。
ssh-keygen
これを実行してSSHキーペアを作成し、id_rsa
and id_rsa.pub
ファイルを作成します。pub
ファイルはサーバー上で何が起こっている、秘密鍵は、( id_rsa
)あなたととどまり、あなた自身を特定する方法は何かということです。ssh-copy-id user@server
ユーザーをリモートユーザーに置き換え、サーバーをマシンのDNS名またはIPアドレスに置き換えて、公開キーをサーバーにコピーします。SSHパスワードの入力を求められ、パスワードを入力します。すべてが正常に完了ssh user@server
すると、パスワードを必要とせずにマシンにアクセスできるようになります。ssh-keygen
入力し、画面上の指示に従ってssh-copy-id user@server
リモートマシンを使用して、リモートユーザとサーバをユーザに置き換える
ssh-copy-id "not-marco@127.0.0.1 -p 1234"
。
私が通常これを行う方法は次のとおりです。
ssh-keygen -t rsa
(パスワードの入力を求められたら、空白のままにします)
次に:
cat ~/.ssh/id_rsa.pub | ssh username@hostname 'cat >> .ssh/authorized_keys'
(これには、ターゲットホスト名のホームディレクトリに.sshフォルダーがあり、authorized_keysファイルが含まれている必要があります)
もちろん、ユーザー名を目的のユーザー名に、ホスト名を目的のホスト名またはIPアドレスに置き換えます
その後、あなたが慣れているように、そのボックスにSSHで接続します。
touch
とchmod
Rinzwindの答えでコマンド?
.ssh/authorized_keys
0600にファイルをか、これは動作しません
私は通常そのために使用しsshpass
、それをインストールしてsudo apt-get install sshpass
このように使用します
sshpass -p 'password' ssh your_username@your_server
sshpass
ですが、リモートサーバーで認証方法を変更できない場合には非常に便利なハックです。
パスワード認証を無効にする
SSHサーバーを使用する多くの人々は弱いパスワードを使用するため、多くのオンライン攻撃者はSSHサーバーを探し、パスワードをランダムに推測し始めます。攻撃者は1時間で数千のパスワードを試行し、十分な時間を与えられた最強のパスワードでさえ推測できます。推奨される解決策は、パスワードの代わりにSSHキーを使用することです。通常のSSHキーと同じくらい推測しにくいように、パスワードには634個のランダムな文字と数字を含める必要があります。SSHキーを使用して常にコンピューターにログインできる場合は、パスワード認証を完全に無効にする必要があります。
パスワード認証を無効にすると、特別に承認したコンピューターからのみ接続できます。これにより、セキュリティが大幅に向上しますが、PCを事前承認せずに友人のPCから自分のコンピューターに接続したり、誤ってキーを削除したときに自分のラップトップから接続したりすることはできません。
特別な理由がない限り、パスワード認証を無効にすることをお勧めします。
パスワード認証を無効にするには、sshd_configファイルで次の行を探します。
#PasswordAuthentication yes
次のような行に置き換えます。
PasswordAuthentication no
ファイルを保存してSSHサーバーを再起動したら、ログイン時にパスワードの入力を求められることはありません。
https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication
PasswordAuthentication no
すべてのユーザーに影響を与えますか?そうでない場合、通常のユーザーに対してはどのようにオフにしますか?私は本当にそれをだまして完全にロックアウトしたくありません。
Permission denied (publickey).
しましたPasswordAuthentication no
。どうすればいいですか?PasswordAuthentication no
別のホストで変更しますか?
このソリューションは、Windowsを使用して、AWSクラウドおよびGCEクラウド上のクラウドイメージを含むリモートマシンにSSH接続するユーザー専用です。
最近、このソリューションを使用して、GCEに新しくデプロイされたvmイメージをリモートログインしました。
puttygen
puttygenダウンロードwinscp
winscpダウンロード秘密鍵を所有している場合:
開くputtygen
、ロードボタンを押して、秘密鍵(*.pem
)ファイルを選択します。
秘密鍵を所有していない場合:
puttygen
、(ソース1から、以下に示すリンク)
notepad
)PuTTYキージェネレーターの[OpenSSH authorized_keysファイルに貼り付けるための公開キー]セクションから公開キーデータをコピーし、キーデータをファイルに貼り付けauthorized_keys
ます。
このファイルにテキストが1行しかないことを確認してください。
authorized_keysファイルをリモートマシンのホームディレクトリにアップロードします。
作成し.ssh
たディレクトリを(存在しない場合)
authorized_keys
ファイルを.ssh
ディレクトリにコピーします。
(これは既存のauthorized_keys
ファイルを置き換えます。これに注意してください)。
ファイルが存在する場合、このファイルの内容を既存のファイルに追加するだけです。
コマンドを実行して権限を設定します。
sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
これで、ssh
毎回資格情報を入力せずにリモートマシンにアクセスできるようになります。
公開/秘密キーペアを作成し、新しく作成した公開キーを使用してログインする場合、パスワードを入力する必要はありません。キーリングおよび/またはsshエージェントの構成によっては、パスフレーズでキーを保護する必要がある場合があります。
ここにあなたのための多くの短いハウツーの一つがあります。生成された秘密鍵が秘密のままであることが、この方法の安全性にとって非常に重要です!誰とでも共有したり、いかなる場合でもアクセスを許可したりしないでください。
このコマンドは、かなり強力なキーを生成します~/.ssh/
:
ssh-keygen -b 4096
に~/.ssh/
公開鍵がありid_rsa.pub
ます。その内容は、可authorized_keys
搬メディア(ペンドライブ)を介してトランスポートするか、サーバーでパスワード認証をすぐに有効にしssh-copy-id ~/.ssh/id_rsa.pub username@server
てから使用し、再度無効にすることにより、サーバーファイルに追加する必要があります。
(最初のステップで)パスフレーズでキーを保護することを選択した場合ssh-agent
、Ubuntuキーリングを使用してそのキーをローカルで保護することで、常に入力する必要がなくなります。
追加するには:
Macにはデフォルトではないのでssh-copy-id
、自分でインストールする必要があります。
curl https://raw.github.com/beautifulcode/ssh-copy-id-for-OSX/master/ssh-copy-id.sh -o /usr/local/bin/ssh-copy-id
chmod +x /usr/local/bin/ssh-copy-id
詳細はこちら:https : //github.com/beautifulcode/ssh-copy-id-for-OSX
ポート転送を行った場合、コマンドは次のようになります。
ssh-copy-id "not-marco@127.0.0.1 -p 2222"
引用符が必要であることに注意してください。
これらのアプリケーションssh
およびscp
リモートログインとリモートコピーでは、それぞれ、パスワードを入力せずにリモートホストと通信できます。これには、以下で説明するような認証手順に従う必要があります。クライアントとは、あなたが座っているマシンを意味し、サーバーとは、パスワードを入力せずにログオンしたいマシンを意味します。認証手順の手順は次のとおりです。
$HOME/.ssh
。$HOME/.ssh/authorized_keys
または$HOME/.ssh/authorized_keys2
サーバーに追加します。認証プロトコルには3つの異なるタイプがあります。ssh-keygenの実行時にタイプを指定します。
chmod 0700
このファイルが他の人に読まれないようにするために取得する必要があります)およびidentity.pub(公開鍵)になります。ssh-keygen -t rsa
、ファイルid_rsa
(秘密鍵)およびid_rsa.pub
(公開鍵)が生成されます。ssh-keygen -t dsa
、ファイルid_dsa
(秘密鍵)およびid_dsa.pub
(公開鍵)が生成されます。ssh-keygenを実行するとき、デフォルトの回答に依存できます(パスフレーズを与えないことを意味します)。これにより、セットアップ全体が簡単になりますが、安全性も低下します。
sshのオプションで使用されるキーのタイプを指定できます。ssh -1
力の使用RSA1の一方のキー(プロトコルバージョン1)、ssh -2
力のSSH試みるRSA又はDSA鍵のみ(プロトコルバージョン2)。以下の例では、RSA1キーとDSAキーをリモートホストに生成してインストールし、柔軟性を高めています。次.ssh
の行を使用して、ディレクトリに構成ファイルを作成できます。
Protocol 1,2
これにより、sshはRSA / DSA(プロトコルバージョン2)の前にRSA1(プロトコルバージョン1)接続を試行します。
remote=user@remotehost # fill in correct user and remotehost names
cd $HOME/.ssh
# create .ssh on remote host if it is non-existing:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi'
# copy RSA1 key:
scp identity.pub ${remote}:.ssh
ssh $remote "cd .ssh; cat identity.pub >> authorized_keys"
remote=user@remotehost # fill in correct user and remotehost names
cd $HOME/.ssh
# create .ssh on remote host if it is non-existing:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi'
# copy DSA key:
scp id_dsa.pub ${remote}:.ssh
ssh $remote "cd .ssh; cat id_dsa.pub >> authorized_keys2"
鍵を生成するときにパスフレーズを使用しなかった場合は、これがすべてです。ssh $ remoteを実行して接続をテストし、パスワードを入力せずにログインできるかどうかを確認できます(sshを使用する-1
か-2
、オプションとして使用する必要がある場合があります)。もちろん、ログオンしたいマシンに対してこの手順を繰り返すことができます。
パスフレーズを使用した場合は、プログラムssh-agent
を実行して特別なシェルを起動し、続いssh-add
てキー/パスフレーズの組み合わせをに登録する必要がありますsshd
。詳細については、これらのプログラムのマニュアルページを参照してください。
ssh-no-password.sh
#!/bin/sh
# create ssh connections without giving a password
if [ $# -lt 1 ]; then
echo Usage: $0 username@remotehost
exit
fi
remote="$1" # 1st command-line argument is the user@remotehost address
this=$HOST # name of client host
# first check if we need to run ssh-keygen for generating
# $HOME/.ssh with public and private keys:
if [ ! -d $HOME/.ssh ]; then
echo "just type RETURN for each question:" # no passphrase - unsecure!!
# generate RSA1, RSA and DSA keys:
echo; echo; echo
ssh-keygen
echo; echo; echo
ssh-keygen -t rsa
echo; echo; echo
ssh-keygen -t dsa
else
# we have $HOME/.ssh, but check that we have all types of
# keys (RSA1, RSA, DSA):
if [ ! -f $HOME/.ssh/identity ]; then
# generate RSA1 keys:
echo "just type RETURN for each question:" # no passphrase - unsecure!!
ssh-keygen
fi
if [ ! -f $HOME/.ssh/id_rsa ]; then
# generate RSA keys:
echo "just type RETURN for each question:" # no passphrase - unsecure!!
ssh-keygen -t rsa
fi
if [ ! -f $HOME/.ssh/id_rsa ]; then
# generate DSA keys:
echo "just type RETURN for each question:" # no passphrase - unsecure!!
ssh-keygen -t dsa
fi
fi
cd $HOME/.ssh
if [ ! -f config ]; then
# make ssh try ssh -1 (RSA1 keys) first and then ssh -2 (DSA keys)
echo "Protocol 1,2" > config
fi
# copy public keys (all three types) to the destination host:
echo; echo; echo
# create .ssh on remote host if it's not there:
ssh $remote 'if [ ! -d .ssh ]; then mkdir .ssh; fi'
# copy RSA1 key:
scp identity.pub ${remote}:.ssh/${this}_rsa1.pub
# copy RSA key:
#scp id_rsa.pub ${remote}:.ssh/${this}_rsa.pub
# copy DSA key:
scp id_dsa.pub ${remote}:.ssh/${this}_dsa.pub
# make authorized_keys(2) files on remote host:
echo; echo; echo
# this one copies all three keys:
#ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_rsa.pub >> authorized_keys2; cat ${this}_dsa.pub >> authorized_keys2;"
# this one copies RSA1 and DSA keys:
ssh $remote "cd .ssh; touch authorized_keys authorized_keys2; cat ${this}_rsa1.pub >> authorized_keys; cat ${this}_dsa.pub >> authorized_keys2;"
echo; echo; echo
echo "try an ssh $remote"
コピー元:http : //folk.uio.no/hpl/scripting/doc/ssh-no-password.html
IdentitiesOnlyをyesに設定しているため、ここですべての回答を読んだとしても、パスワードを入力する必要があると感じる人のために、回答を追加したいと思います。そして、ここでの答えは、gitまたはサーバーのキーである複数のキーを管理する時間を大幅に節約できます。
キーを生成してサーバーにコピーした後:
ssh-keygen # change the file to /home/yourname/.ssh/something
ssh-copy-id -i ~/.ssh/something.pub lerner@192.168.20.160
うまくいかなかった。
それから私は~/.ssh/config
クライアントでファイルをチェックしに行きました、私はこれを一番下で見ました:
Host *
IdentitiesOnly yes
次に、これを上記に追加します。
Host somename
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/something
と入力するだけでログインできますssh somename
。
次に、お気に入りの名前を使用して複数のsshキーを追加できます。設定ファイルに上記の4行のような設定を追加するだけです。
ホストは、後でサーバーに接続するときに入力する名前です。HostNameはサーバーのIPです。Userは、サーバーにログインするユーザー名です。アイデンティティファイルは、生成したキーを保存するファイルです。