scp -i ~/.ssh/id_rsa.pub events*$date*_QA.log $remote_user@$remote_server:$remote_location
上述脚本是否不正确?我是否做得不正确?
我进入.ssh
目录,看到远程服务器在known_hosts
文件中。
但是,当我执行普通的 scp 而没有任何文件作为参数时,它仍然要求输入密码
scp events*$date*_QA.log $remote_user@$remote_server:$remote_location
如何在我的命令中包含密钥文件?
sh-3.2$ grep server ~/.ssh/*
/home/user/.ssh/known_hosts:server....com,ip_addr ssh-rsa Asine=jhjsdhfjsadhfjkashdfjhasdjfhksadjfhasjdfhj
答案1
-i identity_file
Selects the file from which the identity (private key) for public
key authentication is read. This option is directly passed to
ssh(1).
使用~/.ssh/id_rsa
。
答案2
这也许能帮助到其他新手。
[我知道这是一个多余的循环示例,但它很适合说明] 场景:
- 从 Mac 到 Ubuntu 的 ssh
- Mac -> Ubuntu 中的 scp 文件
- 从 Ubuntu -> Mac 关闭 ssh 和 scp 文件
我只在 Mac 上创建了 ssh 密钥(通过 ssh-keygen),并通过(ssh-copy-id)与运行 Ubuntu 的机器共享了这些密钥。因此,我可以在运行 Ubuntu 的机器上登录 Mac 时复制文件,但反过来不行。
解决方案:我必须在 Ubuntu 机器上创建 ssh 密钥并与我的 Mac 共享。然后我才能在 Ubuntu 机器上成功运行以下命令
Mac IP: 192.168.1.40
Ubuntu IP: 192.168.1.38
在 Mac 上
ssh-keygen
ssh-copy-id [email protected]
ssh [email protected]
# Now on Ubuntu
ssh-keygen
ssh-copy-id [email protected]
现在以下命令应该复制文件而不要求输入密码苹果
sudo scp -i /home/ubuntu/.ssh/id_rsa [email protected]:~/Documents/Fluff/Version-Control/tools/pull.sh .
答案3
我通常使用这个:
scp -P <port_if_not_22> -i <path_to_keyfile> <source> <target>
例子:
scp -P 666 -i "T:\.ssh\id_rsa" "D:\somePath\someFile.txt" [email protected]:/root/Downloads/someFile.txt
答案4
通过以下说明进行测试和更正: https://askubuntu.com/questions/46930/how-can-i-set-up-password-less-ssh-login
当我在我的机器(CentOS/CentOS)上测试时,这里的说明完美无缺。我猜想问题是您的 ssh 密钥未与用户名绑定。
例如:cat authorized_keys # 在 Box 上,我正在通过 sshing/scpin 连接到 ssh-rsa BLAHBLAHBLAHBLAH/zAcS4kD9pyPAjD3/gd5D1rcQa6IztCMR9yMXiGFnxviWsT8/oYevZw25k4yREuA8ibLKC9peH1X4LK1E+n7gq4TETexWkZbQ2XGLOX44eglra3MB4FShPg0cZXGcJWltPQ/y0Ay2A/KmaC14YrDfqwm7+ibTiUp4hOO8I6eIPmwwGn/2hs0SewJXisGqUx2v[电子邮件保护]#用户名与密钥绑定,并且是授权主机