ここで他の質問とインターネット上のさまざまな「scp使用法」のチュートリアルを見回しましたが、何が問題なのかを分類できません。
私はLinux Mintを使用していて、scpがどのように機能するかを理解しようとしています。
私はディレクトリ/ home/name/dir /にファイルfile.ext(私のコンピュータ上)を持っています
私はsshを使用してリモートマシンに接続します。
ssh -p 2222 username@domain
それは私にパスワードを尋ね、シェルは表示します:
username@domain ~ $
ここで、コマンドを発行すると(sshを実行する前に、ローカルディレクトリ/ home/name/dirにいた):
scp -r -P 2222 file.ext username@domain
出力は次のとおりです。
cp: cannot stat ‘file.ext’: No such file or directory
File.extの代わりに完全なパスを書き込んだ場合も同じ結果
scp -r -P 2222 /home/name/dir/file.ext username@domain
また、サーバー管理者は、次のように、ファイルを(ルートの代わりに)リモートホームディレクトリにアップロードすることを教えてくれました。
scp -r -P 2222 file.ext username@domain:~/
しかし、それを実行して「Enter」を押しても、シェルがさらに入力を待っているかのように、何も起こりません。
私の問題の要約:
助言がありますか?
リモートではなくローカルマシンからscp
コマンドを実行する必要があります。 ssh
はまったく必要ありません。
dragonmnl@local $ scp -P 2222 file.ext username@domain:~/
また、-r
は必要ありません。
-r Recursively copy entire directories.
すでにリモートマシンにログインしていて、ローカルマシンからコピーする場合は、ローカルマシンがインターネット経由でアクセス可能であり、ssh
が設定されていることを確認する必要があります。私はこれがあなたが望んでいることだとは思いませんが、そうであれば、これをリモートから実行してください:
username@domain $ scp dragonmnl@local:/path/to/file.ext ~/
リモートマシンとローカルマシンの間でファイルをアップロード/ダウンロードする2つの方法を提供します(私はMac airを使用しています)。
この場合、ローカルとリモートの間で「11.jpeg」をアップ/ダウンしたい:
1。
サービス上のファイルをローカルdirにコピー:このコマンドを実行するには、sshにいるときではなく、ローカルのbashターミナルにいる必要があります!
scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/
ローカルディレクトリのファイルをリモートサービスにコピーします。また、ローカルのbashターミナルにいる必要があります
scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx
同じ目的を達成するには、SSHにログインしている場合を設定する必要があります。まず、「システム環境設定」>「共有」>「リモートログイン」>「すべてのユーザー」を設定する必要があります(「すべてのユーザー」を設定する必要があるかどうかわかりません) 、ただし、この状況で機能します)」Macは「このコンピューターにリモートでログインするには、次のように入力します:ssh username @ xxxxxx、次に以下のコマンドを入力します:
scp username @ domain:/home/xxx/xxx/11.jpeg username @ xxxxxx:/ Users/username/Desktop /
上記のこのコマンドは、sshにログインしているときにリモートからローカルにファイルをダウンロードするためのものです。ファイルをアップロードする場合は、2つのパスを変更してください。
このscpコマンドをリモートマシンで実行している場合は、file.ext
を「ローカル」ファイル、つまりリモートマシンでとして探しています。
リモートマシンからローカルマシンにファイルをコピーするには、scp -P 2222 username@domain:dir/file.ext localdir
を使用します(例のように、file.ext
がリモートコンピューターの~/dir
にあると想定しています)。リモートマシンでscp
を実行する場合は、「ローカル」と「リモート」を逆にします。
scp
コマンドを使用するフォルダを転送する場合は、最初にZip
を使用します。後でunzip
することもできます。
コンピューターから、これを実行します。
$ scp your_path_to_the_file/the_file [email protected]:~/
ここで、root
はアカウント、10.145.198.100
はリモートサーバーのIPアドレスです。 the_file
をリモートの~/
フォルダにコピーします。
$ unzip the_Zip_file.Zip -d destination_folder
ほんの少しの貢献です。多分それは私のような初心者に役立つかもしれません:リモートディレクトリへのパスは次のように書かれるべきです:username@domain:~/remote_directory
ここで強調したいのは、常に:~/
Linux client
からLinux Server
にファイルをコピーするためのソリューション次のコマンドを使用して、sshd
がサーバーで実行されているかどうかを確認します:ps aux | grep sshd
そうでない場合は、Sudo apt-get install openssh-server openssh-client
を使用してOpenSSH
をインストールします https://www.tecmint.com/install-openssh-server-in-linux/
サーバーを再起動し、ps aux | grep sshd
を使用してsshd
が実行されていることを確認します
必要な場合は/etc/ssh/sshd_config
ファイルを構成できますが、単純な構成では必要ありません
netcat
nc -v -z 127.0.0.1 22
を使用してポートが開いていることを確認します
Linux
クライアントからLinux
クライアントにファイルをコピーするには、次のようにscpを使用しますscp ~/filename.md [email protected]:~/folder/filename.md
ファイルがコピーされたことを確認するには、ssh [email protected]
を使用してパスワードを入力します。
Linux client
から `WindowsにファイルをコピーするソリューションMSからのOpenSSH など、WindowsでSSHサーバーを実行するための複数のクライアントがあります。
上記のサーバーのいずれかをインストールし、ポート22が開いていることを確認します。
netsh advfirewall firewall add rule name = "SSH Port 22" dir = in action = allow protocol = UDP localport = 22
netsh advfirewall firewall add rule name = "SSH Port 22" dir = out action = allow protocol = UDP localport = 22
netsh advfirewall firewall add rule name = "SSH Port 22" dir = in action = allow protocol = TCP localport = 22
netsh advfirewall firewall add rule name = "SSH Port 22" dir = out action = allow protocol = TCP localport = 22
netsh advfirewallがallprofilesの状態をオフに設定しました
これらのサーバーの比較:
Bitvise SSHサーバー
ネイティブcmd
プロンプト、powershell
プロンプト、オートコンプリートにほぼ近い
高度な使用法が必要な場合は、カスタマイズのための追加機能を提供します
単純なニーズに対するユーザーのカスタマイズは0です。MobaSSH
とOpenSSH
を機能させるために多くの時間を費やした後、2分以内に使い始めました。
Scpを使用してファイルをコピーするには、以下を使用します:scp ~/filename.md [email protected]:/C/Users/username/filename.md
個人使用は無料、プロ使用は99ドル。非常に多くの機能と優れた統合により、価格はお金の価値があります
MobaSSH:
ls
、cp
、find
などの単純なLinuxコマンドがMINGW64
と同様に機能するWindows上のLinuxシェルを提供します
cmd
またはpowershell
と入力すると、cmd
およびpowershell
に直接アクセスできます。
Unicodeサポートは貧弱です。エンコードが正しくありません。たとえば、Python
インタープリターを起動しようとすると、クラッシュします。 ( https://stackoverflow.com/a/12834315/475288 ):chcp 65001
set PYTHONIOENCONDING=utf-8
を使用して手動でエンコードを変更し、次に起動Pythonプロンプト
MobaSSHの素晴らしいところは、非常にシンプルなユーザーインターフェースがあり、scp
とssh
があり、うまく統合されていることです。簡単な使用例でも機能します
Linux
クライアントからWindows
を実行しているMobaSSH
サーバーにファイルをコピーするには:scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
を使用します。これは、MobaSSH
がcygwin
およびそのドライブは、cygwin
- sドライブがマップされるのと同じ方法でマップされます。
OpenSSHv6.7が https://developer.Microsoft.com/en-us/Microsoft-Edge/tools/vms/ からインストールされたMicrosoftのVMを使用し、OpenSSHv6.7がすでにインストールされている。
非常にバグが多く、大幅にカスタマイズする必要があります。
コマンド補完が機能しない
端末上でカーソルを移動すると、空白が残ります
Pythonが機能しない
OpenSSHの以降のバージョンでは、改善されている可能性があります。さらに、MSはOptional Features
https://developer.Microsoft.com/en-us/Microsoft-Edge/tools/vms/ を介してOpenSSHを利用可能にするようです