web-dev-qa-db-ja.com

ローカルPCからリモート共有サーバーにファイルをコピーできるようにSSHキーを設定するにはどうすればよいですか?

FTPの代わりにSSHの使用を開始したいのですが、SSHキーに関してはわかりません。

(現在FTPで行っているように)ファイルを転送するためにGulpコマンドを使用したいと思います。これを行うNPMパッケージをかなり見つけました。ただし、リモート共有(LAMP)サーバーとローカルマシン(MacOS)でSSHキーを実際にセットアップする方法については説明していません。

誰もこれを設定する方法を知っていますか?私が見つけたすべてのチュートリアルは、SSHキー自体ではなく、node.jsパッケージのセットアップを扱っています。

追加情報で更新

  • サーバーはLinuxです。 CPanelを実行している安価な共有LAMPスタックサーバーです。
  • CPanelおよびFileZilla FTPを介してのみサーバーにアクセスできます(SFTPは使用できません)
  • 実行中のssh -i ~/.ssh/id_rsa [email protected] -vvvの出力は次のとおりです。
OpenSSH_7.9p1, LibreSSL 2.7.3
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Connecting to mysite.com port 22.
ssh: connect to Host mysite.com port 22: Operation timed out
  • ファイアウォールの問題であると考えて、複数のISPでテストしましたが、同じ問題が発生しました。
  • CPanel GUI内にあるターミナルでnetstat -ntlp | grep sshコマンドを実行しようとしました(他にこれを実行する方法はわかりません)が、netstatコマンドを認識しませんでした。
1
MeltingDog
  • おそらく、 この記事 に興味があるかもしれません。ただし、この記事を読む前に、最初にSSH信頼を設定することをお勧めします。
  • したがって、問題のステートメントは、ローカルマシンからリモートサーバーにいくつかのファイルをコピーすることです。
  • そのためには、まず認証方法を選択する必要があります。リモートサーバーがLinuxの場合、パスワードベースとパスワードレスa.k.a SSHキーベースの認証という2つのオプションがあります。
  • リモートサーバーがあなたを認証するために、これらは起こる必要があるステップです
  • ローカルマシンでSSHキーペア(プライベートキー+公開キー)を作成します。
  • ローカルマシンからコンテンツ公開鍵をリモートサーバーの.ssh/authorized_keysファイルにコピー/追加するだけです。
  • ここで、ローカルマシンからリモートサーバーへのSSHを試みる場合、最初のステップで既に作成した秘密キーファイルで認証しようとしていることをコマンドで指定し、認証が成功します。対応する公開キーをリモートサーバーのauthorized_keysファイルにインポートしました。

  • まず、キーペアssh-keygen -t rsaを作成し、Enterキーを押すだけですべてのデフォルトオプションを選択します。

  • 上記のコマンドの出力では、秘密鍵ファイルと公開鍵ファイルが生成されることがわかります。例:Your identification has been saved in /home/ec2-user/.ssh/id_rsaYour public key has been saved in /home/ec2-user/.ssh/id_rsa.pub
  • ここで、id_rsa.pubのCONTENTファイルを、あなたのケースで言及したディレクトリから〜/ .ssh/authorized_keysにコピー/追加します。
  • SSH信頼が確立されたことを確認するには、次のコマンドを使用して、ローカルマシンからリモートサーバーへのSSHを試みます-ssh -i /location/of/private/key username@remote_server_ip
  • すべてが正常でログインできる場合は、この投稿の最初の行で述べたリンクをたどるだけです。
3
st_rt_dl_8
  • おそらく、バックトラックし、コンテキストをもう少し理解しようとする必要があります。次の回答が役立ちます。前述したように、私が提案した手順は、リモートサーバーがLinuxであるという前提に基づいています。
  • リモートサーバーのOSは何ですか?
  • リモートサーバーにログインできますか?
  • そのコマンドを実行すると、ssh -i ~/.ssh/id_rsa [email protected]は-vvvフラグを付けて実行します。これにより、SSHがデバッグモードで実行され、内部で発生していることに関する詳細情報が明らかになります。サンプルコマンドはssh -i ~/.ssh/id_rsa [email protected] -vvvです。出力を教えてください。
  • もう一度、リモートサーバーがLinuxであると仮定すると、次の可能性があります:-
  • リモートマシン上のsshdサーバーは、デフォルトのTCP 22以外のポートでリッスンしています。
  • これを確認するには、リモートマシンにログオンしてSudo netstat -ntlp | grep sshを実行します。 SSHサーバーがSSH接続をリッスンしているポートが表示されます。
  • SSHがTCP 22以外のポートでリッスンしていることがわかったら、そのsshコマンドに-pフラグを追加する必要があります。その中のサンプルコマンドはssh -p port_number_on_which_SSH_server_is_listening -i ~/.ssh/id_rsa [email protected] -vvvになります
  • 上記のコマンドの出力がない場合は、SSHがリモートサーバーで実行されていないことを意味し、これがSSHに接続できない理由です。*
  • また、同じコマンドを使用して接続できるリモートインスタンスもあります。そのインスタンスへのSSHアクセスを無効にし、デバッグモードでSSHコマンドを実行すると、問題を再現/再現することができました。これは私が得た出力です(同じエラーが発生しています):
$ ssh -i /c/Users/XXX/ssh-keys/sl.pem [email protected] -vv
OpenSSH_7.5p1, OpenSSL 1.0.2k  26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolving "13.233.220.64" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 13.233.220.64 [13.233.220.64] port 22.
debug1: connect to address 13.233.220.64 port 22: Connection timed out
ssh: connect to Host 13.233.220.64 port 22: Connection timed out
1
st_rt_dl_8