Skip to content

Instantly share code, notes, and snippets.

@Ryomasao
Last active June 2, 2021 04:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ryomasao/3f4300eecce33c9edd6dda5ac35bd37c to your computer and use it in GitHub Desktop.
Save Ryomasao/3f4300eecce33c9edd6dda5ac35bd37c to your computer and use it in GitHub Desktop.
sshメモ

ssh に関するめも

そのほか

php の公開鍵を用いるメソッドに疑問を覚えたら、すばらしい回答があったのでメモ。 公開鍵認証の SSH をするとき、クライアントには秘密鍵だけじゃなくって、公開鍵ももってるんだって。知らなかった。

https://teratail.com/questions/86653

scp

ローカル toRemote

scp ./a.txt configのHOST名:/tmp/

rsync + ssh

サーバ間でファイル同期を行う。

まず、ssh で他サーバにログインできることを確認

$ ssh user@ip -i to/secretKey.pem
$ rsync -aznvh -e 'ssh -i to/secretKey.pem' /path/from.txt user@ip path/from.txt
# あれ、↑の構文だめだった
$ rsync -e 'ssh -i ~/.ssh/prd.key' -nv ./test/a  ec2-user@xxxx:/tmp/test
  • -a 権限とかタイムスタンプとか極力そのまま移行してくれる
  • -z 圧縮して転送する
  • -h ファイルサイズを見やすくしてくれる
  • -v 詳細を表示
  • -n dry-run
  • -r ディレクトリを転送したいときに指定

sudo

AmazonLinux とかで root で ssh ログイン許可がない場合、リモート先で sudo で rsync を実行できるようにすればいいっぽい。

visudo でリモート先で rsync を sudo で実行できるようにしておく visudo についてはどっかで勉強しよう

以下は ec2-user に sudo rsync の許可をする

Defaults!/usr/bin/rsync    !requiretty
ec2-user    ALL=(ALL)       NOPASSWD: /usr/bin/rsync

次に、--rsync-pathに、sudoをつけてあげると、リモート先でも sudo になる 以下は、ディレクトリhome/hogeuser/home配下に追加する例

home/hogeuser配下のファイルをコピーしたい場合は、home/hogeuser/とする必要があって、送信元のスラッシュの有無によって意味合いが異なるとのこと。 送信先はスラッシュの有無は関係ないみたい。

$ sudo rsync -az -e 'ssh -i ./secretKey.pem'  --rsync-path='sudo rsync' /home/hogeuser ec2-user@IP:/home
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment