两台 CentOS 之间传数据:SCP 方式

两台 CentOS 之间传数据:SCP 方式

一、CentOS 安装 SSH 服务

0、注意

两台主机上都需要安装!

1、更新系统

首先,确保你的系统是最新的。打开终端并运行以下命令来更新系统:

sudo yum update

2、安装 OpenSSH 服务器

使用 yum 包管理器来安装 OpenSSH 服务器。在终端中运行以下命令:

sudo yum install openssh-server

3、启动 SSH 服务

安装完成后,启动SSH服务并设置它开机自启:

sudo systemctl start sshd
sudo systemctl enable sshd

4、检查SSH服务状态

你可以检查 SSH 服务的状态,确认它是否正在运行:

sudo systemctl status sshd

5、配置防火墙

如果你的服务器正在运行防火墙,你需要允许 SSH 通过。CentOS 7及更高版本使用firewalld作为防火墙。运行以下命令来允许SSH服务:

sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --reload

6、测试 SSH 连接

现在你可以从另一台计算机上测试SSH连接了。使用SSH命令连接到服务器:

ssh [username]@[server_ip]

替换[username]为你的 CentOS 用户名(如root),[server_ip]为你的CentOS服务器的IP地址。

7、更改SSH默认端口(可选)

如果你想更改SSH的默认端口(22),你可以编辑/etc/ssh/sshd_config文件:

sudo vi /etc/ssh/sshd_config

找到Port 22这一行,将其更改为你想要的端口号,然后保存并退出编辑器。之后,重启SSH服务以应用更改:

sudo systemctl restart sshd

现在,你应该能够在CentOS服务器上使用SSH服务了。记得在更改配置后,确保测试新的设置是否正常工作。

二、文件传输

1、命令

在Server A上,打开终端,然后使用以下SCP命令来传输文件:

scp /path/to/source/file.txt username@server_b:/path/to/destination/

这里的/path/to/source/file.txt是你想要传输的文件的完整路径,username是你的Server B上的用户名,server_b是Server B的IP地址或主机名,/path/to/destination/是文件在Server B上的目标路径。

# 格式
scp 本机文件 用户名@ip地址:目标路径

# 举例
scp hello.zip root@1.15.55.255:/data/webroot/

2、输入密码

当你执行上述命令后,系统会提示你输入Server B的用户密码。输入正确的密码后,文件传输就会开始。

使用 expect 自动输入密码的方法

expect 是一个用于自动化交互式应用程序的工具,它能够根据程序的输出自动地发送输入。在 Linux 和 Unix 系统中,expect 通常用于自动化那些需要用户输入的命令,比如 scp、ssh、telnet 等。

expect 的工作原理是通过编写脚本来模拟人类与程序的交互。脚本中定义了预期的输出(即程序的响应)和相应的输入(即程序的输入)。当程序运行并产生输出时,expect 会检查输出是否与脚本中定义的预期输出匹配,如果匹配,它就会发送相应的输入。

例如,当你使用 scp 命令从一个机器复制文件到另一个机器时,通常需要手动输入目标机器的密码。使用 expect,你可以编写一个脚本,让 expect 等待 scp 命令的输出,并在检测到需要输入密码的提示时自动发送密码,从而实现自动化的文件复制过程。

安装 expect

yum install expect

下面是一个简单的 expect 脚本示例,用于自动执行 scp 命令:

#!/usr/bin/expect
set timeout 30
# 注意修改成对应的用户名@主机地址
spawn scp /home/hello.txt 用户名@主机地址:/home/hello.txt
# 这个提示要写对,就是默认情况下让输入密码的提示
expect "用户名@主机地址's password:"
# 替换成自己的密码
send "你的密码\r"
interact

3、等待传输完成即可

文件传输完成后,你会在终端看到相应的提示信息。此时,你可以登录到Server B上,检查文件是否已经成功传输到指定的路径下。

三、配置SSH无密码登录(未亲测)

1、配置 SSH 密钥

第一步:在Server A上,生成 SSH 密钥对(如果还没有的话):

ssh-keygen

第二步:复制生成的公钥(默认为~/.ssh/id_rsa.pub)到Server B的~/.ssh/authorized_keys文件中。你可以使用ssh-copy-id命令来简化这个过程:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_b

​ 这里的user是你的用户名,server_b是Server B的IP地址或主机名。

第三步:输入Server B的密码后,你的公钥就会被添加到Server B的~/.ssh/authorized_keys文件中。

2、测试无密码登录

在Server A上,尝试无密码登录到Server B:

ssh user@server_b

如果配置正确,你应该能够直接登录而不需要输入密码。

3、检查SSH配置

确保Server B上的/etc/ssh/sshd_config文件中的以下设置是正确的:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

确保没有配置行被注释掉,并且这些设置没有被更改。

4、重启 SSH 服务

如果你做了任何更改,比如修改了sshd_config文件,你需要重启SSH服务来使更改生效:

sudo systemctl restart ssh

或者

sudo service ssh restart

完成这些步骤后,你应该能够在 Server A 上无密码登录到 Server B。记得在操作过程中,保持对服务器权限和网络安全的注意。

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值