在 Linux 服务器的日常运维和开发工作中,经常会涉及到服务器之间的文件传输以及免密登录配置。这不仅能提高工作效率,还能简化复杂的操作流程。本文将结合具体实例,详细介绍 SCP 远程拷贝命令和服务器之间免密操作的相关知识。
一、SCP 远程拷贝命令
在 Linux 系统里,常规的cp
命令虽然能实现本地文件或文件夹的拷贝,但无法跨电脑操作。而scp
命令则突破了这一限制,能够在不同电脑之间轻松拷贝文件。
(一)基本语法
scp
命令的基本语法格式为:scp A电脑上的文件 用户名@主机名:路径
。以将/etc/hosts
文件从本地拷贝到名为bigdata01
的服务器为例,使用的命令是:scp /etc/hosts root@bigdata01:/etc/
。执行该命令后,系统会提示输入bigdata01
的密码,输入正确密码后即可完成文件拷贝。
(二)拷贝文件夹
当需要拷贝文件夹时,只需在命令中添加-r
参数,命令格式变为:scp -r A电脑上的文件夹 B电脑用户名@B电脑的主机名:路径
。这种方式在迁移项目目录或配置文件目录时非常实用。
(三)灵活使用
除了使用主机名,scp
命令还支持使用 IP 地址进行文件传输,例如:scp /etc/hosts root@192.168.233.128:/etc/
。另外,如果在操作时已经进入到了源文件所在目录,还可以利用$PWD
(当前工作目录)变量来简化操作,像这样:先进入到/etc/
目录,然后执行scp /etc/hosts root@bigdata01:$PWD
。
可能会遇到的问题:
1、远程拷贝,需要两台都启动
2、无法识别bigdata02 解决办法:修改 /etc/hosts 文件
二、服务器之间的免密操作
在搭建服务器集群或频繁进行服务器间交互时,每次登录都输入密码会十分繁琐。这时,配置服务器之间的免密登录就显得尤为重要。下面以bigdata01
免密登录到bigdata02
为例进行介绍
(一)生成公钥和私钥
首先,在bigdata01
上执行ssh-keygen -t rsa
命令。执行过程中一路回车即可,该命令会在/root/.ssh/
目录下生成公钥id_rsa.pub
和私钥id_rsa
。这对密钥是实现免密登录的关键,公钥用于加密信息,私钥用于解密。
二)传递公钥
生成密钥对后,需要将bigdata01
的公钥传递给想要免密登录的bigdata02
。通过ssh-copy-id bigdata02
命令就能轻松完成这一操作。其本质是将bigdata01
中的公钥拷贝到bigdata02
的/root/.ssh/authorized_keys
文件中。
三)验证与原理
完成上述操作后,在bigdata01
上执行ssh bigdata02
命令,如果不需要输入密码即可成功登录,就说明免密登录配置成功。登录完成后,可使用exit
命令退出当前登录。
免密登录的原理基于非对称加密技术:当bigdata02
接收到bigdata01
的连接请求时,会随机生成一串字符串,并用bigdata01
的公钥对其进行加密,然后将密文发送给bigdata01
。bigdata01
使用自己的私钥对密文进行解密,并将解密后的明文再发送回bigdata02
。bigdata02
将收到的明文与自己最初生成的字符串进行对比,如果一致,就允许bigdata01
免密登录。
免密登录的原理:
(四)注意事项
- 免密登录是单向的。如果
bigdata01
可以免密登录bigdata02
,并不意味着bigdata02
就能免密登录bigdata01
。若要实现双向免密登录,需要在bigdata02
上也进行同样的操作,生成密钥对并将公钥传递给bigdata01
。 - 在搭建像 Hadoop 集群这类复杂环境时,为确保集群顺利启动,通常还需要让服务器能免密登录自身。在
bigdata01
上执行ssh-copy-id bigdata01
命令即可实现这一目的。
掌握scp
远程拷贝命令和服务器之间的免密操作,对于 Linux 服务器的管理和运维工作至关重要。通过这些操作,可以更加高效地进行文件传输和服务器间的交互,减少不必要的重复劳动。希望本文的内容能帮助大家在服务器管理工作中更加得心应手,轻松应对各种复杂场景。
以上就是本次分享的全部内容,如有任何疑问或建议,欢迎在评论区留言交流。