我正在尝试在两个网络交换机之间传输文件。
拓扑结构:
交换机A------交换机B (10.219.20.209)
以下是我尝试过的步骤:
使用以下命令在 SwitchA 上生成公共 ssh 密钥 -
ssh-keygen -t rsa
使用以下命令将新生成的密钥从 SwitchA 复制到 SwitchB -
scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/id_rsa.pub
现在尝试传输文件,但仍然要求提供凭据。
root@RE:0% scp test.sh [email protected]:/tmp/
Password:
请建议我如何在不使用密码的情况下实现文件传输。
答案1
我相信对于瞻博网络交换机来说,有一个独特的语法配置身份验证。
语法如下:
authentication {
(encrypted-password "password" | plain-text-password);
load-key-file URL filename;
no-public-keys;
ssh-dsa "public-key";
ssh-ecdsa "public-key";
ssh-rsa "public-key";
}
答案2
#!/usr/bin/expect --
set arg1 [lindex $argv 0]
set arg2 [lindex $argv 1]
set DATE [exec date +%Y_%m_%d-%H.%M.%S]
spawn echo $DATE
spawn ssh $arg1 -l root
expect {
"*(yes/no)*" { send "yes\r" }
"Password:" { send "Juniper\r" }
}
expect {
"Password:" { send "Juniper\r" }
"*@*" {send " \r" }
}
set FILE $arg2
append FILE "_"
append FILE $DATE
send "cd /var/tmp/; cp $arg2 $FILE ; echo \"\" > NH-HALP.log \r"
expect "*@*"
send "scp \"$FILE\" [email protected]:/var/tmp/\r"
expect {
"*(yes/no)*" { send "yes\r" }
"Password:" { send "Juniper\r" }
}
expect {
"Password:" { send "Juniper\r" }
"*@*" {send " \r" }
}
答案3
第2步:使用ssh-copy-id [email protected]
/root/.ssh
另外,验证10.219.20.209 上的权限。他们一定是drwx------
。