我正在尝试使用 winSCP 连接到我们的远程服务器。之前是可以用的。但从今天开始我无法使用 SFTP 连接到服务器。如果我将协议更改为 SCP,那么我就可以连接。我也可以使用腻子进行连接。
以下是 winSCP 日志。(删除了主机详细信息)
. 2011-11-07 20:18:54.593 Using SFTP protocol.
. 2011-11-07 20:18:54.593 Doing startup conversation with host.
> 2011-11-07 20:18:54.593 Type: SSH_FXP_INIT, Size: 5, Number: -1
. 2011-11-07 20:18:54.593 Server sent command exit status 127
. 2011-11-07 20:18:54.593 Disconnected: All channels closed
* 2011-11-07 20:18:54.624 (ESshFatal) Connection has been unexpectedly closed. Server sent command exit status 127.
* 2011-11-07 20:18:54.624 Cannot initialize SFTP protocol. Is the host running a SFTP server?
. 2011-11-07 20:31:40.036 …Run Code Online (Sandbox Code Playgroud) 我需要将大约 1TB 的由较小文件(大部分小于 100KB)组成的数据迁移到另一台服务器。我什至没有完全列举这些文件,但估计在 1-2 百万之间。
使用 SCP 的初始副本花费了一个多星期。现在我们必须同步更改。每天都会添加数百到数千个文件。
我已经尝试使用 rsync (v3) 但它花费了太长时间。到它完成时,我们将再次恢复数据不同步。
我在这里看到过类似的问题,但它们有点旧,想知道是否有任何新工具可以帮助完成此过程。
由于源数据位于读取性能较差的共享 iSCSI 系统上,问题变得更加复杂。
最新的策略可能是重做数据迁移,并让开发人员编写一个工具来记录迁移过程中添加的所有新文件。唯一标识符的目录结构键非常广泛和深入,因此新文件分散在此结构中,重写应用程序以将新文件放入特定目录是行不通的。
任何策略表示赞赏。
操作系统是 RHEL 5 到 RHEL 6。
的scp(OpenSSH的)命令接受为相对路径host:path/,其是相对于主机上的主目录。我想更改默认目录的位置。
例如,我想创建一个快捷方式伪主机.ssh/config的线沿线
Host bar
hostName foo
## this directive does not actually exist:
DefaultDirectory /home/me/some/path/here
Run Code Online (Sandbox Code Playgroud)
这样我就可以写
scp some_file bar:baz
Run Code Online (Sandbox Code Playgroud)
代替
scp some_file foo:some/path/here/baz
Run Code Online (Sandbox Code Playgroud)
openssh 可以吗?
目前,我正在尝试使用 Vim 的内置 netrw 插件编辑远程服务器上的文件。我可以使用如下命令通过 SSH 连接到我的 Amazon EC2 服务器:
ssh -i <keyfile> bitname@<ec2-address>
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够使用我自己的 Vim 配置,并且一直在尝试像这样使用 scp:
:e scp://user@<ec2-address>//
Run Code Online (Sandbox Code Playgroud)
但是如果没有参数来输入我的密钥文件,我会收到一个权限被拒绝(公钥)错误。
是否有参数可用于输入我的密钥文件或我忽略的其他解决方案?
提前致谢,
我需要从SCP的文件machineB,并machineC到machineA。我正在从machineA. 我已经正确设置了 ssh 密钥。
如果文件不存在的machineB,那么它应该是那里machineC。我需要将所有 PARTITION1 和 PARTITION2 文件移动到 machineA 各自的文件夹中,如下所示在我的 shell 脚本中 -
#!/bin/bash
readonly PRIMARY=/export/home/david/dist/primary
readonly SECONDARY=/export/home/david/dist/secondary
readonly FILERS_LOCATION=(machineB machineC)
readonly MAPPED_LOCATION=/bat/data/snapshot
PARTITION1=(0 3 5 7 9)
PARTITION2=(1 2 4 6 8)
dir1=$(ssh -o "StrictHostKeyChecking no" david@${FILERS_LOCATION[0]} ls -dt1 "$MAPPED_LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | head -n1)
dir2=$(ssh -o "StrictHostKeyChecking no" david@${FILERS_LOCATION[1]} ls -dt1 "$MAPPED_LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | head -n1)
length1=$(ssh -o "StrictHostKeyChecking no" david@${FILERS_LOCATION[0]} "ls '$dir1' | wc -l")
length2=$(ssh -o …Run Code Online (Sandbox Code Playgroud) 我在 Amazon EC2 上有一个实例,其中包含一个大型文件(~180MB)。我需要将该文件复制到我的本地机器上,所以我很自然地尝试了scp. 在多次尝试以获得 20-30kb/s 的最大速度并断开连接(只有一次我在短时间内达到 ~200KB/s,但随后连接断开)后,我尝试了 HTTP。通过 HTTP,我得到了 1MB/s,它上升到了 2MB/s,在不到两分钟的时间内完成了传输。在 scp 上,ETA 大约是三个小时。
scp由于加密,我知道它比 HTTP 慢,但我不认为仅凭这一点就可以导致性能下降约 30 倍。所以我猜有一些限制正在进行,可能是在我的 ISP 处。有什么办法可以确定吗?还是有其他原因?
有没有办法将私钥的内容直接传递给scp命令,而不必将其复制到文件并通过-i /path/to/key.pem选项指向它?
所以,而不是做:
scp -i key.pem source target
我可以执行以下操作吗?
scp -i '-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAMIIEowIBAA...\n' source target
当然,我试过这个,但它不起作用,但也许这可以通过一些 BASH 管道、输出重定向或类似的东西来实现。
我需要这样做的原因是因为我无法将密钥存储在文件系统中(这是一个非常漫长而无聊的故事),并且该命令每次都需要使用不同的密钥执行数百万次,因此额外的磁盘 i/o 对我们的结果很重要。
我正在尝试使用非常基本的 scp 命令将文件从本地系统上的虚拟机(Ubuntu 18.04)移动到远程服务器。此问题仅存在于一台特定服务器上,其他服务器工作正常,因此这不是一个普遍问题。
scp <file name> <user>@<complete_hostname>:~/
Run Code Online (Sandbox Code Playgroud)
但此命令不会在身份验证成功后继续进行。
SCP Log: (from local machine, Ubuntu 18.04)
==========
debug1: Next authentication method: publickey
debug1: Offering public key:
RSA SHA256:<key> /home/username/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to 'HOSTNAME' ([10.6.26.145]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: Sending environment.
debug1: Sending env LANG = en_IN
debug1: Sending command: scp -v -r -d -t ~/received/
Form another …Run Code Online (Sandbox Code Playgroud) 我正在尝试将文件从本地桌面复制到远程服务器。
是 - 我想要复制到的远程目录设置为chmod 777
是 - 服务器受密码保护,并且我确信我有正确的密码,因为我能够通过 ssh 连接到服务器。
该服务器适用于 Drupal 7 站点,我在 Windows 10 系统上尝试过Gitbash和 Windows PowerShell。该服务器由Cisco Anyconnect和Armor进行保护和管理。
我不知道问题是什么..任何人都可以提供一些指导吗?
谢谢!
我的调试输出(我已交换了用户名<my-user>和 IP 地址xxx.xxx.xx.xx):
PS C:\Users\Jill> scp -v ~/logo.png <my-user>@xxx.xxx.xx.xx:/var/www/html/sites/all/themes/bootstrap/bootstrap_subtheme
Executing: program ssh.exe host xxx.xxx.xx.xx, user <my-user>, command scp -v -t /var/www/html/sites/all/themes/bootstrap/bootstrap_subtheme
OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4
debug1: Connecting to xxx.xxx.xx.xx [xxx.xxx.xx.xx] port 22.
debug1: Connection established.
debug1: identity file C:\\Users\\Jill/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory …Run Code Online (Sandbox Code Playgroud) 我需要自动化一种将文件分发到许多服务器的方法。问题当然是我需要使用安全协议(SSH 或 SCP)并且每个服务器上的用户名/密码不同。
场景是我们有一个主服务器 a,用户 a_prod,我们需要将更新的脚本/配置等发送到服务器 b、c、d ……在这些服务器上,用户名是 b_dev、c_test、d_prod每个都有唯一的密码。
出于一些原因,用户名需要在不同环境中是唯一的,处理 DB2 和公司安全。
共享密钥在这种情况下不起作用,因此我需要通过脚本传递用户名和密码。是AIX环境,我没有安装expect的能力。
有任何想法吗?
下面的多个回复中提到了共享密钥:我尝试了几种方法来做到这一点,我认为主要问题是远程用户 ID 不存在于任何其他主机上,因此我无法在主机上为它们执行 ssh-keygen我想通过 ssh 执行共享密钥实现,主用户 (a_prod) 具有多个身份,具体取决于目标主机 (b_dev、c_test_d_prod)。这些用户的私钥需要在主机a上为远程用户生成,然后他们的公钥需要复制到目标主机。
scp ×10
ssh ×4
amazon-ec2 ×2
bash ×2
linux ×2
private-key ×2
automation ×1
file-sharing ×1
http ×1
migration ×1
permissions ×1
rsync ×1
sftp ×1
shell ×1
ubuntu ×1
vim ×1
winscp ×1