ssh+scp基本使用

Easter79
• 阅读 817

1 ssh

ssh一般用于连接服务器,可以使用密码认证与密钥认证的方式。

1.1 密码认证

直接使用ssh即可:

ssh username@xxx.xxx.xxx.xxx

username为用户名,后面为公网ip. 若需要使用特定端口登录,加上p参数,比如使用12345端口:

ssh -p 12345 username@xxx.xxx.xxx.xxx

1.2 密钥认证

密钥认证需要先生成密钥,然后把公钥使用scp上传到服务器,接着修改服务器的ssh配置文件。

1.2.1 生成密钥

ssh-keygen -t rsa -b 4096 -C "email" -f /xxx/id_rsa

t表示加密算法,b指定位数,C表示注释,识别这个密钥,一般用邮箱即可。f表示生成的私钥文件位置(需要加上文件名),公钥会放在同一文件夹下。

ssh+scp基本使用

1.2.2 上传公钥

使用scp上传公钥到服务器,注意是公钥,ssh-keygen会生成一个公钥与私钥,pub结尾的文件就是公钥,默认叫id_rsa.pub .

scp /xxxx/id_rsa.pub username@xxx.xxx.xxx.xxx:/root/

这里就直接放到服务器上的/root下。

1.2.3 修改ssh配置文件

先使用ssh密码认证的方式登录服务器,然后修改/etc/ssh/sshd_config:

cd /etc/ssh
cp sshd_config sshd_config.bak
vim sshd_config

找到PubKeyAuthentication这一行,修改如下:

ssh+scp基本使用

如果需要修改端口的,搜索Port,直接修改:

ssh+scp基本使用

接着重启sshd服务:

systemctl restart sshd

1.2.4 测试连接

ssh -i /xxx/id_rsa -p port username@xxx.xxx.xxx.xxx

其中i后为私钥的位置,p参数如果修改了默认的端口(22)则需要加上自定义端口。

如果在windows上生成的私钥,可能会有如下问题:

ssh+scp基本使用

这里提示私钥的权限是755,也就是其他用户可读,需要修改为600:

chmod 600 /xxx/id_rsa

如果用的是wsl可能会修改失败,需要加上wsl的配置,修改/etc/wsl.conf(如果没有就新建)

vim /etc/wsl.conf

输入:

[automount]
enabled = true
options = "metadata,umask=22,fmask=11"
mountFsTab = false

退出wsl重启,然后再修改权限,应该就没问题了。

2 scp

scp是secure copy的缩写,一般用于从服务器下载文件或上传文件到服务器,与ssh类似,可以使用密码认证或密钥认证或指定端口。

2.1 上传文件(夹)到服务器

scp localFile username@xxx.xxx.xxx.xxx:/xxxx
scp -r localDir username@xxx.xxx.xxx.xxx:/xxx

上面是密码认证的方式,密钥认证请加上i参数,指定私钥位置:

scp localFile username@xxx.xxx.xxx.xxx:/xxx
scp -i /xxx/id_rsa -r localDir username@xxx.xxx.xxx.xxx:/xxxx

需要特定端口请加上P参数(注意是大写,不是ssh的小写p端口参数)

scp -i /xxx/id_rsa -P xx localFile username@xxx.xxx.xxx.xxx

2.2 从服务器下载文件(夹)

scp username@xxx.xxx.xxx.xxx:/xxx   /localDir
scp -r username@xxx.xxx.xxx:/xxx  /localDir

第一个是下载文件,第二个是下载文件夹,需要加上r参数。

同理,密钥认证加i参数,端口加P参数:

scp -i /xxx/id_rsa -P xx username@xxx.xxx.xxx.xxx:/xxx  /localDir
scp -i /xxx/id_rsa -P xx -r username@xxx.xxx.xxx.xxx:/xxx  /localDir
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
前端尾随者 前端尾随者
2年前
sourceTree 添加 ssh key 方法
1.使用git客户的生成公私钥:id\rsa、id\rsa.pub1.1设置Git的username和email:$gitconfigglobaluser.name"xxx"$gitconfig\globaluser.email"xxx.mail@xxx.com"1.2.生成SSH密钥过程:1.2.1.检查是不是已经存在密钥(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
ssh连接服务器
1.概述ssh是一种网络通信协议,用于计算机之间的加密登录.一般用ssh连接服务器有两种方式:密码认证与密钥认证.密码认证就是通过传统的输入密码的方式登录,密钥认证就是把产生的公钥注册到服务器后,用私钥登录,这样就可以不用每次登录输入密码.特别适合作者这种脑残记不住密码的懒人.2.密码认证密码认证登录直接在终端使用ssh
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k