远程登录工具ssh && 跨主机远程拷贝scp

正文开始@Assassin

目录:

  • 远程登录工具ssh && 跨主机远程拷贝scp
    • 1. ssh简介:
    • 2. ssh基本用法:
    • 3. 配置别名登录:
    • 4. 免密登录:
    • 5. 远程执行命令:
    • 6. scp跨主机远程拷贝:

1. ssh简介:

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在非安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统,通常利用SSH来使用命令行界面和远程执行命令。SSH使用频率最高的场合是类Unix系统,但是Windows操作系统也能有限度地使用SSH。2015年,微软宣布将在未来的操作系统中提供原生SSH协议支持,win10 已基本提供OpenSSH工具。

在设计上,sshtelnet和非安全shell的替代品。telnetBerkeley rloginrshrexec等协议采用明文传输,使用不可靠的密码,容易遭到监听、嗅探和中间人攻击ssh旨在保证非安全网络环境中的信息加密完整且可靠。

2. ssh基本用法:

在linux系统上ssh是极为常用的工具,通过 ssh client 可以连接到运行了 ssh server 的远程服务器上。 ssh client 的基本使用方法是:
远程登录服务器:

ssh user@hostname -p port
  • user:用户名
  • hostname:ip地址/域名
  • port:端口号,默认是22

实际上“ -p port ”不是很常用,ssh的端口号默认为22,如果需要登录到某一特定端口时才需要使用到 -p 选项:

ssh Assassin@114.55.55.152

默认端口号为22,输入passwd后便可远程登录到我的云服务器:
注: 如果事先没有安装过ssh,需先安装openssh-server

3. 配置别名登录:

在使用ssh进行远程登录时,格式为ssh user@hostname -p port,这样写起来相对来说比较不友好,毕竟hostname一般来说是一串点分十进制的四字节字符串。可以通过配置别名的方式来曲线登录,在~/.ssh/config文件中添加格式如下表:提前指定Host别名,将ip地址,用户名及端口号(不填默认为22)填到对应的位置即可。

如果家目录下没有.ssh的话可以自行创建一个,同理.ssh中没有config也是自己创建。可以同时设置多个别名:

Host myserver1HostName IP地址/域名User 用户名Port 端口号Host myserver2HostName IP地址/域名User 用户名Port 端口号

保存退出后即可使用指定的别名登录到指定服务器的指定用户,like this:

由于没有其他云服务器了,这里姑且就直接用当前服务器的root用户来试验了
可以看到是使用了server别名来进行远程登录的,还是比较高效的。

ps:刚刚在配置了~.ssh/config保存退出后执行ssh + 别名登录,发现竟然报错了,错误信息是Bad owner or permissions on ~/.ssh/config,意思是提示:错误的所有者或权限,查阅了一番资料后解决了这个问题。在执行ssh操作时可能会出现文件夹或者文件没有生效的情况,也就是无效的权限,可能需要遵循以下的权限表:

因为我的.ssh文件夹中没有config文件,所以由普通用户创建的config文件的权限为664,而根据权限表,config文件的权限应该是600

Path Permission
.ssh directory (code) 0700 (drwx------)
private keys (ex: id_rsa) (code) 0600 (-rw-------)
config 0600 (-rw-------)
public keys (*.pub ex: id_rsa.pub) 0644 (-rw-r–r–)
authorized_keys (code) 0644 (-rw-r–r–)
known_hosts 0644 (-rw-r–r–)

这里的config文件可能是需要仅所有者的rw权限,也就是600,解决方法自然是:

[Assassin@Ninghai .ssh]$ sudo chmod 600 config


至于为什么会出现这种情况,我个人觉得应该是.ssh文件夹对于所属组及others没有进入的x权限,自然也就不允许文件夹里面的文件对于非所有者用户也任何权限了,因为.ssh文件夹非所有者用户都进不去,就没有必要谈对文件夹中的文件有r权限了。了解的大神请issue!!


补充:
普通用户创建文件夹的权限是775,普通文件的权限是664 ;
root用户创建文件夹的权限是755,普通文件的权限是644 ;
这是由于umask的不同。具体原因请见:权限管理的 5.4 修改文件的掩码


4. 免密登录:

要实现免密登录的前提是得生成ssh密钥,密钥分为公钥和私钥。
基本操作是:

  • 在自己的服务器上生成一对ssh key(如果已经存在可以不生成)
  • 拷贝公钥到远端的服务器上

创建密钥的方式是:

[Assassin@Ninghai ~]$ ssh-keygen -t rsa

不加任何选项的ssh-keygen也可生成密钥,不加任何选项默认是以rsa算法生成密钥。

执行 ssh-keygen 即可生成ssh密钥,一路回车即可。

生成的信息如下:大概的意思是说生成的公钥放在了 ~/.ssh/id_rsa.pub,私钥放在了 ~/.ssh/id_rsa

Your identification has been saved in /home/Assassin/.ssh/id_rsa.
Your public key has been saved in /home/Assassin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IZa/qbYS+MUW8Xy5RbtZtra/dShXija2kA0fWKjqI7U Assassin@Ninghai
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|      ..   ..    |
|      ++. .o..   |
|     ..oooooo o  |
|   . . .S.oo.= ..|
|  . . =. o.=ooo+ |
|   . =..o o O.+.o|
|    +.E.   + =. o|
|     ++o    .  oo|
+----[SHA256]-----+

执行结束后,~/.ssh目录下会多出两个文件:

  • id_rsa:私钥
  • id_rsa.pub:公钥

可以使用cat指令查看公私钥内容。


之后就是第二步操作:拷贝公钥。基本想法是:想免密登录到哪个服务器,就将公钥拷贝给哪个服务器即可。

例如想免密登录server服务器。则只需将公钥中的内容复制到server中的~/.ssh/authorized_keys文件里即可。(没有authorized_keys可自行创建)

不过要使远端服务器记住公钥,更为简单的方法是直接执行指令:ssh-copy-id user@hostname -p port,该指令会一键添加公钥到远端服务器的~/.ssh/authorized_keys文件中:

现在从当前服务器远程登录到server服务器无需验证密码:

自然,在server服务器也生成了~/.ssh/authorized_keys文件,其中的内容便是对应的公钥:

5. 远程执行命令:

ssh可以实现跨主机远程执行命令,命令格式:

[Assassin@Ninghai ~]$ ssh user@hostname 'command'

在本地主机执行远端服务器的指令,对于长命令或者命令列表需要用单引号括起来:

6. scp跨主机远程拷贝:

scp用于主机之间的远程传输文件,scp 是 secure copy 的缩写,是linux系统下基于ssh登录进行安全的远程文件拷贝命令。

命令格式:

scp file user@hostname:path

将本主机下的文件复制到远端主机的path路径下。

也可一次拷贝多个文件:

scp file1 file2 user@hostname:path

拷贝文件夹:

scp -rf dir user@hostname:path

具体操作:

over~

【linux系统编程】远程登录工具ssh | 跨主机远程拷贝scp相关推荐

  1. Linux常用命令(一) —— 开关机命令shutdown、远程登录命令ssh、远程拷贝文件命令scp

            目录 1.关机/重启命令 shutdown 2.远程登录命令 ssh 3.远程拷贝文件命令 scp 1.关机/重启命令 shutdown (1) 基本格式 直接使用 shutdown ...

  2. Linux外网远程登录访问内网主机

    Linux外网远程登录访问内网主机 远程登录软件:Xshell6 主机系统:ubuntu-19.10-desktop-amd64 连接协议:ssh 虚拟机:VMware Workstation 16 ...

  3. linux telnet远程登录工具,Linux 远程登录(telnet ssh)

    Linux 远程登录(telnet ssh) telnet [root@rhel6 ~]# rpm -qa | grep telnet telnet-server-0.17-47.el6.x86_64 ...

  4. Linux系统编程(一)——环境搭建

    准备写系统的总结Linux系统的一些知识以及Linux系统编程.这一篇先讲Linux搭建常用的开发环境. 目录 0x01 Linux开发环境搭建 一.远程链接操作 0x02 GCC 一.安装 二.了解 ...

  5. 【Linux】Linux系统编程(入门与系统编程)(一)(环境搭建、常见指令以及权限理解)

    目录 linux系统编程 : 1.推动技术进步的基本模式 2.理解操作系统的发展 Linux 背景介绍 UNIX发展的历史: Linux发展历史 开源 Linux的发行版本: a.技术角度 b.商业化 ...

  6. Linux可以用vs2019,使用visual studio 2019进行Linux系统编程

    上篇说到一个简单模块如何直接在ubuntu下进行linux 模块驱动程序开发测试,这次讲如何用c操作模块? 使用visual studio 2019进行Linux系统编程 首先打开: 修改.安装Lin ...

  7. alin的学习之路(Linux系统编程:一)(Linux基础命令)

    alin的学习之路(Linux系统编程:一)(Linux基础命令) 1.Linux学习准备 操作系统的作用 向上给用户提供简单的操作计算机硬件的方式 对下管理硬件 承上启下 程序运行在操作系统上,程序 ...

  8. linux 软件 web管理系统,如何快速安装Webmin(linux系统web管理配置工具)

    如何快速安装Webmin(linux系统web管理配置工具) 简介: Webmin是目前功能最强大的基于Web的Unix系统管理工具.管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作 ...

  9. 在Linux系统下更改或更新SSH密钥密码的方法

    本文介绍如何在Linux系统下更新或更改SSH密钥密码,也适用在Unix系统中.SSH密钥通常用于向某些信息系统的用户进行身份验证,SSH密钥本身是私钥,使用从密码短语导出的对称加密密钥进一步加密私钥 ...

最新文章

  1. marquee实现文字移动效果;js+div实现文字无缝移动效果
  2. torchtext语料库 词与 下标互转使用教程
  3. 逐飞科技对于STC8H1K系列的单片机正交解码的资料以及实验
  4. 牛顿方法、指数分布族、广义线性模型—斯坦福ML公开课笔记4
  5. 前端:JS字符串操作函数类库
  6. 在Xshell 6开NumLock时按小键盘上的数字键并不能输入数字
  7. 大数据实验报告总结体会_建设大数据中台架构思考与总结
  8. centos mysql导出数据库命令_在centos(linux)下用命令导出mysql数据库数据
  9. 如何成为java高手
  10. 关于自动装箱和自动拆箱
  11. Linux查看so库访问的IP,linux-ip命令杂记
  12. java 从一个容器获取对象,Java 如何实现从spring容器中获取注入的bean对象
  13. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用6
  14. K3 官改新手小白配置阿里DDNS 超级详细
  15. vue.js安装步骤教程
  16. 微信小程序轮子 - 外卖点餐左右联动界面完整源码(类似美团饿了么点餐界面)
  17. 阿里云智能技术战略架构师陈绪:透视2019云计算酣战
  18. SD-WAN最让人心动的四个功能
  19. 水仙花数(java)
  20. motoman机器人正向运动学

热门文章

  1. 十动然鱼!《闲鱼年会经济数据》来了:卖得最快的奖品还是它
  2. 索尼发布Xperia 8手机:采用骁龙630处理器
  3. iPhone8已跌至三千元档,迫不及待的入手了一部
  4. IG击败TOP进入春季赛决赛 王思聪督战时吃玉米动作亮了
  5. 给fiddle 解密_fiddler学习笔记2 字段说明;移动设备、解密证书
  6. python如何移动图片_Pygame的图像移动|python基础教程|python入门|python教程
  7. 【java】为什么 HashMap 的加载因子是0.75?
  8. 【Flink】Flink 报错 flink 1.12.5 启动作业报 partition not found
  9. 【kafka】kafka topic某些分区 副本落后leader太多
  10. 【SpringCloud】Spring cloud Alibaba Sentinel 服务降级 (阿里版本Hystrix)