Linux-04ssh

这篇具有很好参考价值的文章主要介绍了Linux-04ssh。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ssh登录

作用

  • 在开发时,通常会用Terminal通过ssh登录到每个服务器里,打开服务器终端,以进行开发,通常来说,一个服务器会给出如下的几个信息:
host
IP
password

登录服务器

  • 基本格式:ssh user@hostname

    • user:用户名
    • hostname:IP地址/域名
  • 如果是第一次登录的时候,会有提示,输入yes,输入密码,即可登录,密码输入时不显示。文章来源地址https://www.toymoban.com/news/detail-760597.html

    • 输入exit/ctrl+d/logout即可退出
    • 当输入yes时,会将服务器信息存入ssh文件夹中的known_hosts文件(~/.ssh/known_hosts),再次登录就无需验证Yes

修改端口号

  • 默认端口号为22,修改端口号的基本命令格式为:ssh user@hostname -p 22

配置文件

  • 通过配置文件的方式给服务器账号配置别名,用短字符串替代长字符串

# 在根目录下有
~/.ssh/config
# 没有的话可以创建一个名为config的文件

# 在其中编写:
Host 别名
    HostName IP地址/域名
    User     用户名
    port     默认情况下,如果不写即为22

# 当有多个服务器时,可以配置多个服务器账号,格式如下:

Host myserver1
...
Host myserver2
...

# 之后再使用服务器时,可以直接使用别名myserver1、myserver2

免密登录

# 创建密钥
ssh-keygen

# 一直回车后,在~/.ssh中出现了两个文件
id_rsa 密钥
id_rsa.pub 公钥

# 密钥与公钥是唯一配对的一对,生成之后,想要免密登录到哪个服务器,即将公钥传到哪个服务器即可
cat id_rsa.pub
ctrl + insert
# 登录到想要免密登录的服务器,在其中创建~/.ssh文件夹,创建新文件authorized_keys,将内容复制进去即可
mkdir ~/.ssh
cd ~/.ssh
vim authorized_keys
shift + insert
# 当有多个密钥时需用空格隔开

# 也可以使用如下命令一键添加公钥
ssh-copy-id 服务器名称

执行命令

  • 当实现自动化运维时,需要执行一些基本的操作,通过使用执行命令,来让服务器执行一些基本的自动化格式命令

# 基本格式
ssh user@hostname command
ssh user@hostname ls -a

# 同样的,执行命令可以执行一个for循环,ssh会将执行命令的标准输出重定向到当前终端中
# 单引号中的$i可以求值,会被解析,在本地服务器不会解析,传过去的就是 $i
ssh myserver 'for ((i = 0; i < 10; i ++ )) do echo $i; done'
# 双引号中的$i不可以求值,不会被解析,因为在本地服务器已经解析了
ssh myserver "for ((i = 0; i < 10; i ++ )) do echo $i; done"

# 补充讲解

# 案例1
# 双引号中的字符串命令会取到本地的值,单引号中的字符串命令不会取到本地的值,会原封不动的传到服务器端
name=aa
ssh myserver "echo $name" # 输出aa,本地有name的值,传过去的是echo aa
ssh myserver 'echo $name' # 输出为空,服务器端没有name的值
ssh myserver 'echo \$name' # 输出$name,转义了不取值

# 案例2
ssh myserver 'for ((i=1;i<=10;i++)) do echo $i; done' # 服务器输出1-10,本地不解析
ssh myserver "for ((i=1;i<=10;i++)) do echo $i; done" # 输出为空,本地解析但没有定义i的值
ssh myserver "for ((i=1;i<=10;i++)) do echo \$i; done" # 服务器输出1-10,原封不动传过去

# 总结
# 单引号中 $x 可以取得语句命令中的 x 值 – 如果使用双引号的话可以加转义
# 双引号中 $x 可以取到语句命令外的 x 值

scp传文件

  • 实现不同文件之间传文件
# 基本命令:将source路径下的文件复制到destination中
scp source destination

# 同样的一次可以复制多个文件
scp source1 source2 destination

复制文件夹

  • 基本命令:scp -r
    • -r 一定要放在source与destination前面
    • 对于某一个位置的地址,一般格式为:myserver: 后面接的是相对于服务器账号的家目录,可以是绝对路径/相对路径
      scp -r ~/tmp myserver:/home/acs/

服务器与服务器之间进行文件传输

  • 一般模式为:服务器1->本地服务器->服务器2
  • 两个服务器之间也可以进行直接传输,但是需要相互之间完整授权

scp复制的两个方向

# 去:从本地家目录下的tmp文件夹复制到myserver服务器的/home/acs文件夹下
scp -r ~/tmp myserver:/home/acs

# 来:将服务器的文件夹复制到本地的dir文件夹
scp -r myserver:/var/lib/locales/supported.d ./dir

scp指定服务器端口号

# P大写,且P放在source和destination之前
scp -P xx source destination

使用scp配置一个毛坯服务器

# 配置一个毛坯服务器,需要装饰的东西,也就是vim与tmux

# 将.vimrc与.tmux.conf复制到服务器对应的目录下
# 位置在初始的Terminal中输入ls -a即可找到
ssh .vimrc .tmux.conf myserver
scp ~/.vimrc ~/.tmux.conf myserver:

# tmux如果不生效则重新加载
tmux list-sessions
tmux kill-server
tmux

tmux source ~/.tmux.conf

习题


# 获取ssh教程配套的远程服务器账号的信息
homework 4 getinfo
User: acs_1245
HostName: 123.57.67

# 创建好作业后,先进入文件夹/home/acs/homework/lesson_4/,然后:
homework 4 create
cd /home/acs/homework/lesson_4/

(0) 进入homework_0文件夹,要求:
    [1] 该文件夹内容为空
	
	cd homework_0
	rm * -r
	
    [2] 配置服务器账号的密钥登陆方式。服务器信息可以通过如下命令获得:
        homework 4 getinfo
        将服务器账号的名称(Host)配置成:myserver
	# 配置名称
	vim ~/.ssh/config
	Host myserver
		HostName IP地址或域名
		User 用户名

	# 密钥登陆方式1
	ssh-keygen
	cat ~/.ssh/id_rsa.pub
	ctrl+a z
	set:nonu
	ctrl+insert
	ssh myserver
	vim ~/.ssh/authorized_keys
	:set paste
	shift+insert

	# 密钥登录方式2
	ssh-copy-id myserver

(1) 进入homework_1文件夹,下列描述中的“本地”均表示当前文件夹。要求:
    [1] 在myserver服务器上创建并清空文件夹:~/homework/lesson_4/homework_1/
	
	cd ../homework_1
	ssh user@hostname
	cd ~/homework/lesson_4/homework_1/
	rm * -r
	
    [2] 将本地的main.cpp文件上传到myserver中的~/homework/lesson_4/homework_1/目录中。
	
	scp main.cpp myserver:~/homework/lesson_4/homework_1/
	
    [3] 在本地创建文件夹dir。
	
	mkdir dir
	
    [4] 将myserver中的/etc/lsb-release文件复制到dir中。
	
	scp -r myserver:/etc/lsb-release ./dir
	

(2) 进入homework_2文件夹,下列描述中的“本地”均表示当前文件夹,要求:
    [1] 在myserver服务器上创建并清空文件夹:~/homework/lesson_4/homework_2/
	
	cd ../homework_2
	ssh myserver
	cd ~/homework/lesson_4/homework_2/
	rm * -r
	
    [2] 将本地的dir文件夹上传到myserver中的~/homework/lesson_4/homework_2/目录中。
	
	scp -r ./dir myserver:~/homework/lesson_4/homework_2/
	

(3) 进入homework_3文件夹,下列描述中的“本地”均表示当前文件夹,要求:
    [1] 在本地创建文件夹dir。
	
	cd ../homework_3
	mkdir dir
	
    [2] 将myserver中的/var/lib/locales/supported.d文件夹下载到本地dir文件夹中。
	
	scp -r myserver:/var/lib/locales/supported.d dir
	

(4) 进入homework_4文件夹,编写脚本remote_mkdir.sh和remote_rmdir.sh,要求:

scp remote_mkdir.sh remote_rmdir.sh myserver:~/homework/lesson_4/homework_4/
# 并非传输文件过去执行,而是在本地执行这些命令

    [1] 在myserver服务器上创建并清空文件夹:~/homework/lesson_4/homework_4/
	
	ssh myserver
	mkdir ~/homework/lesson_4/homework_4/
	cd ~/homework/lesson_4/homework_4/
	rm * -r
	
    [2] 本地目录下仅包含remote_mkdir.sh和remote_rmdir.sh
	
	cd ../homework_4
	rm * -r
	vim remote_mkdir.sh
	vim remote_rmdir.sh
	
    [3] remote_mkdir.sh和remote_rmdir.sh具有可执行权限
	
	chmod +x remote_mkdir.sh
	chmod +x remote_rmdir.sh
	
    [4] remote_mkdir.sh接收一个传入参数。格式为 ./remote_mkdir.sh directory_name
        该操作可以在myserver服务器上的~/homework/lesson_4/homework_4/目录下,创建一个名为directory_name的文件夹
	# 单引号中 $x 可以取得语句命令中的 x 值 – 如果使用双引号的话可以加转义
	# 双引号中 $x 可以取到语句命令外的 x 值
	
	vim remote_mkdir.sh
	
	#! /bin/bash
	# mkdir / -p 创建一系列的文件夹,-p有就跳过没有就创建
	ssh myserver "mkdir -p ~/homework/lesson_4/homework_4/\"$1\""
	ssh myserver 'mkdir -p ~/homework/lesson_4/homework_4/$1'
	
    [5] remote_rmdir.sh接收一个传入传输。格式为 ./remote_rmdir.sh directory_name
        该操作可以将myserver服务器上的~/homework/lesson_4/homework_4/目录下的名为directory_name的文件夹删掉。
	# 单引号中 $x 可以取得语句命令中的 x 值 – 如果使用双引号的话可以加转义
	# 双引号中 $x 可以取到语句命令外的 x 值
	
	vim remote_rmdir.sh
	
	#! /bin/bash
	# rm * -r
	ssh myserver "rm -r ~/homework/lesson_4/homework_4/\"$1\""
	ssh myserver 'rm -r ~/homework/lesson_4/homework_4/$1'
	
    [6] 注意:传入的文件参数可能包含空格。两个脚本均不需要判断传入参数的合法性。
	# 可能包含空格,因此需要使用引号引上

到了这里,关于Linux-04ssh的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu20.04安装后,root账户无法登录,ssh无法远程连接处理方法

    最近一直在用Ubuntu系统,发现了一些规律性的东西,每当安装完系统就得去做一些事情,要不然无法正常丝滑的使用,我把这几个罗列出来:(装机的步骤我就省了,比较简单跟着向导来就行,不要最小化安装就行) 1.更换apt 源为阿里云镜像源(下载包的时候会很快) 2.给

    2024年02月10日
    浏览(58)
  • 如何安装ubuntu22.04以及ubuntu各个版本配置国内源和ssh远程登录

      目录 一.简介 二.配置root账号 三、配置IP地址 四、更换阿里云源 五、配置ssh,root可以远程登录安装ssh服务 VMware17.0安装教程(2023最新最详细)-CSDN博客 VMware虚拟机安装Ubuntu22.04教程(2023最新最详细)-CSDN博客 Ubuntu22.04(非虚拟机)安装教程(2023最新最详细)-CSDN博客 Linux是一

    2024年02月08日
    浏览(56)
  • Linux-04ssh

    在开发时,通常会用Terminal通过ssh登录到每个服务器里,打开服务器终端,以进行开发,通常来说,一个服务器会给出如下的几个信息: 基本格式: ssh user@hostname user:用户名 hostname:IP地址/域名 如果是第一次登录的时候,会有提示,输入yes,输入密码,即可登录,密码输入时

    2024年02月04日
    浏览(18)
  • 运维系列(亲测有效):ubuntu.22.04-server版详细安装方法安装以及ssh配置root登录

    Linux是一种自由和开放源代码的操作系统内核,被广泛应用于各种计算机系统中。它以稳定性、安全性和灵活性而闻名,并成为服务器、嵌入式设备和个人计算机等领域的首选操作系统。 Linux的主要特点和功能包括: 开放源代码:Linux采用开放源代码模式,意味着用户可以自

    2024年03月22日
    浏览(39)
  • linux ssh远程登录

    目录 一、ssh概念 二、配置文件 三、ssh组成结构 四、远程控制过程 五、远程复制  六、配置密钥 七、wraooers防火墙                     一、ssh概念   ssh:一种安全通道协议 功能:1.实现字符界面远程登录 2.远程复制 3.ssh协议是对通信对方的数据传输进行加密出来,包括用

    2024年02月06日
    浏览(36)
  • Linux开启ssh远程登录

    你好! 这里介绍了Linux系统Centos、Ubuntu环境下开启ssh的方法。 安装openssh-server; 修改sshd服务配置文件 开启监听端口,去掉前面的#注释即可 允许远程登录 使用用户名密码作为验证连接 开启sshd服务 7.配置开机自启动 安装ssh服务器端,Ubuntu默认没有安装ssh的server,需要安装 修

    2024年02月07日
    浏览(30)
  • Linux SSH PublicKey 登录

    ssh 远程登录密码认证的方式有 Password 、 Keyboard Interactive 和 Public Key 三种主要方式。 前面两种方式就是密码认证,含义都是一样大同小异。第三种是登录方式最安全的一种,也是我们常用的云服务器默认使用的一种方式。 本文就如何配置并使用 Public Key 来登录进行演示。 以

    2024年02月09日
    浏览(26)
  • Linux系列讲解 —— SSH登录

    讲解一下ssh远程登陆的基础知识。 SSH (Secure Shell)是一种安全的远程登录协议,旨在提供比传统的未加密的远程登录协议更好的安全性。SSH协议采用了客户端-服务器架构,通过建立安全信道实现客户端和服务器之间的通信。SSH协议有三个层次:传输层、用户身份验证层和连接

    2024年02月04日
    浏览(48)
  • Linux创建SSH密钥、设置密钥登录、密钥登录原理

    Linux有2种登录方式: 使用用户名加密码的登录方式; 密钥登录; 密钥登录: SSH登录是用的RSA非对称加密的,SSH密钥登录的时候可使用RSA密钥登录,SSH有专门创建SSH密钥的工具 ssh-keygen 一般的密码方式登录,容易有密码被暴力破解的问题。 将 SSH 的端口设置为默认的 22 以外的

    2024年02月08日
    浏览(47)
  • Linux Debian11服务器安装SSH,创建新用户并允许SSH远程登录,及SSH安全登录配置!

    在Debian 11服务器上安装SSH并创建新用户允许SSH远程登录的步骤如下: 步骤1:安装SSH 为了安装SSH服务器,您需要以root用户或具有sudo特权的用户身份登录到您的Debian 11服务器。 在终端中执行以下命令来安装SSH服务器: 步骤2:创建新用户 要创建一个新用户,您可以使用  add

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包