22以外のポートでssh-copy-idを実行することは可能ですか?


99

SSHが標準以外のポートで実行されているサーバーがあります。22の代わりに8129で実行されます。ログインするには、次を使用します。

ssh -p 8129 hostname

これで、パスワードなしのログイン用のキーをセットアップする必要があるときはいつでも、公開キーをコピーして、それをauthorized_keysに手動で追加する必要があります。コマンドssh-copy-idを使用してこのプロセスを簡素化できることを発見しましたが、sshサーバーのポートを指定するオプションがないようです。

ssh-copy-idポート8129を使用するように指示する方法はありますか、このコマンドを忘れて、以前のように手動でコピー/貼り付けする必要がありますか?

回答:


112
$ ssh-copy-id "-p 8129 user@host"

ソース: http : //it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html

注:ポートはuser @ hostの前にある必要があります。そうしないと解決されません。


11
それは本当に愚かです、それsshは構文を持ちssh -p 1234 user@hostssh-copy-id "-p 1234 user@host"そして最後にscp -P 1234 user@host。同じ構文を使用するのはとても良いことです。
トムバート

2
@Tombartに続いてrsyncが持っていrsync -e "ssh -p 1234" user@hostます。カスタムポートを使用するよりも手間がかかると断言します。
garetmckinley

1
@Colt McCormackの答えは、これは新しいバージョンで改善され、この独特の構文はもはや必要ないことを説明しています。
メッシュの

1
FYI完全なコマンドは、IPは二回で入力された必要とし、のようなものになりますssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
縮退

1
macOS(私はHigh Sierraにいます)では、引用符は不要です。すなわち。ssh-copy-id -p 8129 user@host動作します。
アルジュン

46

ssh-copy-id基になるsshコマンドに渡すことができる引数を取りませんが、でエイリアスを設定できます~/.ssh/config

Host myhost
HostName hostname
Port 8129

次にを実行しssh-copy-id myhostます。


3
これはまたの必要性を除去する利点がある-p定期的にフラグsshの試みを。したがって、それはこの質問に対する正しい答えであるだけでなく、「正しいこと」の期間でもあります。
ウォーレンヤング

これをありがとう。ホストの自然なホスト名に満足している場合、2行目の「HostNameホスト名」は必要ありません。
ロニービズ

17

openssh-client_6.2現在、この構文を許可するコマンド専用のポートフラグがあります。

ssh-copy-id -p 8129 user@example

また、-oフラグを使用して他のsshオプションを追加するサポートも追加しました。

これは、13.04で導入された適切なバージョンのUbuntuのマニュアルページです。http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1.html


3
これが唯一有効な方法です。
ルカスティーブ

11

ソースをざっと見ると、ssh-copy-idこれを許可する機能がないように見えます。ただし、代わりに次のようなことができます。

ssh -p8129 user@host 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_*.pub

6

これは動作します(ここから):

ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'

5

私はいつもscpそれをコピーするために使用していました:

scp -P 8129 ~/.ssh/id_*.pub user@host:
ssh -p 8129 user@host 'cat id_*.pub >> ~/.ssh/authorized_keys'

言わなければならないが、将来それらを覚えていれば、おそらく他の(1行/接続)メソッドを使用するでしょう。しかし、これはあなたのための別のオプションです。


2

CentOS7の場合:

 ssh-copy-id "-p 1234" user@host

user @ hostを引用符で囲まないように注意してください。そうしないと、この配布で次のエラーが発生します。

/usr/bin/ssh-copy-id: ERROR: Bad port ' 1234 user@host'

0

私のmacOSでは、これはうまくいきました。

ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port> user@host

0

私はこのコマンドを使用します:

ssh-copy-id ssh://user@ip_addr:port

例:

ssh-copy-id ssh://root@1.2.3.4:23

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.