相关链接:
使用 SSH 协议可以连接远程服务器和服务并向它们验证。 利用 SSH 密钥可以连接到 GitHub,而无需在每次访问时都提供用户名和 personal access token。还可以使用 SSH 密钥对提交进行签名。
在生成 SSH 密钥之前,您可以检查是否有任何现有的 SSH 密钥。
打开终端。
输入 ls -al ~/.ssh
以查看是否存在现有的 SSH 密钥。
$ ls -al ~/.ssh
# Lists the files in your .ssh directory, if they exist
检查目录列表以查看是否已经有 SSH 公钥。 默认情况下,GitHub 的一个支持的公钥的文件名是以下之一。
提示:如果收到错误,指示 ~/.ssh 不存在,则表明默认位置中没有现有的 SSH 密钥对。 您可以在下一步中创建新的 SSH 密钥对。
生成新的 SSH 密钥或上传现有密钥。
检查现有 SSH 密钥后,您可以生成新 SSH 密钥以用于身份验证
打开终端。
粘贴下面的文本(替换为您的电子邮件地址)。
// 进入本机.ssh目录【也可以放在任意地方,推荐放在本机.ssh目录中】
cd ~/.ssh
ssh-keygen -t ed25519 -C "your_email@example.com"
注意:如果你使用的是不支持 Ed25519 算法的旧系统,请使用以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
这将以提供的电子邮件地址为标签创建新 SSH 密钥。
> Generating public/private ALGORITHM key pair.
当系统提示您“Enter a file in which to save the key
(输入要保存密钥的文件【给密钥文件自定义命名】)”时,
可以按 Enter 键接受默认文件位置。 请注意,如果以前创建了 SSH 密钥,则 ssh-keygen 可能会要求重写另一个密钥,在这种情况下,我们建议创建自定义命名的 SSH 密钥。 为此,请键入默认文件位置,并将 id_ssh_keyname 替换为自定义密钥名称。
> Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM): [Press enter]
在提示符下,键入安全密码。 有关详细信息,请参阅“使用 SSH 密钥密码”。
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
ssh-keygen命令 – 生成SSH密钥文件
ssh-keygen命令来自英文词组“SSH key generate”的缩写,其功能是用于生成SSH密钥文件。ssh-keygen命令能够对SSH密钥文件进行生成、管理、转换等工作,支持RSA和DSA两种密钥格式。
语法格式:ssh-keygen [参数] [对象]
用配置文件可以管理多个远程服务器,其格式如下:
Host 服务器名A
user 用户名
hostname 服务器ip
port 端口号
identityfile 本地私钥地址
...
Host 服务器名B
user 用户名
hostname 服务器ip
port 端口号
identityfile 本地私钥地址
...
...
...
Host *
...
...
通过Host
指定配置块,用tab
键来区分配置头和内置参数
所有参数值都可使用通配符设定,比如可以设置一个Host
值为星号(*
),用于设置全局配置
注释用#
号开头
配置文件不区分大小写,所以Host
和host
一样
Host
:指定配置块User
:指定登录用户Hostname
:指定服务器地址,通常用ip
地址Port
:指定端口号,默认值为22
Identityfile
:指定本地认证私钥地址ForwardAgent yes
:允许ssh-agent
转发IdentitiesOnly
:指定ssh
是否仅使用配置文件或命令行指定的私钥文件进行认证。值为yes
或no
,默认为no
,该情况可在ssh-agent
提供了太多的认证文件时使用IdentityFile
:指定认证私钥文件StrictHostKeyChecking
:有3
种选项
ask
:默认值,第一次连接陌生服务器时提示是否添加,同时如果远程服务器公钥改变时拒绝连接yes
:不会自动添加服务器公钥到~/.ssh/known_hosts
中,同时如果远程服务器公钥改变时拒绝连接no
:自动增加新的主机键到~/.ssh/known_hosts
中比如配置文件如下:
Host server
user ubuntu
hostname 123.231.032.123
port 22
连接方式如下:
# 登录远程服务器【server:用户设置的名称】
$ ssh server
⚠️注意:这里传输文件夹可能需要权限,默认如果服务器没有对应的文件夹会自动创建,否则会提示错误❌。
# 你可以使用mkdir命令创建目录
ssh server
mkdir -p /www/wwwroot/fileName
exit
# 传输文件【不需要登录ssh,直接在本地传输文件的目录中执行该条命令】
$ scp hello.txt server:/www/wwwroot/fileName
# 要上传文件夹,您可以使用-r选项,该选项表示递归复制,以包括目录中的所有内容。
scp -r your_directory/ server:/www/wwwroot/fileName
# 登录远程服务器
ssh server
#获取当前文件路径
pwd
具体操作
1、登录操作
<aside> 💡 任意地方打开终端,输入:ssh ***** 即可远程登录操作
</aside>
2、上传文件【注意上传文件不需要事先登录ssh】
<aside> 💡 选中demo文件,鼠标右击使用终端打开
</aside>
<aside> 💡 通过scp命令进行上传文件
</aside>
<aside> 💡 注意如果是上传“文件夹”需要提前在服务器上创建好文件夹
</aside>
<aside> 💡 登录ssh
</aside>