ssh登入

基本用法

远程登录服务器:

ssh user@hostname
  • user: 用户名
  • hostname: IP地址或域名

第一次登录时会提示:

The authenticity of host '123.57.47.211 (123.57.47.211)' can't be established.
ECDSA key fingerprint is SHA256:iy237yysfCe013/l+kpDGfEG9xxHxm0dnxnAbJTPpG8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入yes,然后回车即可。

这样会将该服务器的信息记录在~/.ssh/known_hosts文件中。

然后输入密码即可登录到远程服务器中。

默认登录端口号为22。

如果想登录某一特定端口:

ssh user@hostname -p 22

配置文件

创建文件 ~/.ssh/config

然后在文件中输入:

Host myserver1
   HostName IP地址或域名
   User 用户名

Host myserver2
   HostName IP地址或域名
   User 用户名

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

密钥登录

创建密钥:

ssh-keygen

然后一直回车即可。

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

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

之后想免密码登录哪个服务器,就将公钥传给哪个服务器即可。

例如,想免密登录myserver服务器。则将公钥中的内容,复制到myserver中的~/.ssh/authorized_keys文件里即可。

也可以使用如下命令一键添加公钥:

ssh-copy-id myserver

执行命令

命令格式:

ssh user@hostname command

例如:

ssh user@hostname ls -a

或者

# 单引号中的$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"

win连阿里云 密钥对

用户目录下找到.ssh目录(everything找ssh也行)

创建文件config

image-4866ec3e image-52044091

为config文件提供权限

icacls C:\Users\zv041\.ssh\config /inheritance:r
icacls C:\Users\zv041\.ssh\config /grant zv041:F
icacls C:\Users\zv041\.ssh\config /remove "UNKNOWN\\UNKNOWN"
  • /inheritance:r 是移除继承的权限。
  • /grant zv041:F 是授予你的账户 zv041 完全控制权限。
  • /remove "UNKNOWN\\UNKNOWN" 是移除不需要的用户。

确保公钥在服务器上存在

cat ~/.ssh/authorized_keys
image-adaf2691

将私钥文件放在.ssh目录下

image-66bee734

设置私钥文件的权限

icacls C:\Users\zv041\.ssh\wei_01.pem /inheritance:r
icacls C:\Users\zv041\.ssh\wei_01.pem /grant zv041:F
image-574f005a

解释:

icacls C:\Users\zv041\.ssh\wei_01.pem /inheritance:r

  • icacls 是一个 Windows 命令,用于显示或修改文件和文件夹的访问控制列表 (ACL)。

  • C:\Users\zv041\.ssh\wei_01.pem 是目标文件的路径,这里指定的是你的 .pem 文件。

  • /inheritance:r 用于移除文件的权限继承规则。

    作用:此命令的作用是移除该文件的继承权限,即该 .pem 文件将不再从其上级目录继承任何权限。它确保该文件只根据直接分配给它的权限进行访问控制,而不会从父文件夹继承其他权限规则。这是为了增强 SSH 私钥的安全性,防止其他用户意外获得访问权限。

icacls C:\Users\zv041\.ssh\wei_01.pem /grant zv041:F

  • /grant zv041:F 用于授予指定用户或组的特定权限。

    • zv041 是当前登录的用户(在你的系统中)。
    • :F 表示“Full control”(完全控制)权限,意味着 zv041 用户对该文件有完全的访问权限,包括读取、写入、修改和删除该文件。

    作用:此命令的作用是明确授予用户 zv041 对该 .pem 文件的完全控制权限,确保只有你自己可以访问和操作这个文件,进一步增强文件的安全性。

修改配置文件(config)

Host myserver
    HostName 8.130.142.189
    User root
    IdentityFile C:/Users/zv041/.ssh/wei_01.pem
image-575a7c11

再尝试使用 ssh myserver进行连接

连接成功

image-ea482b6d

我的公钥

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCEaMEMqfu92PqoE+vayOvGiuydq/nMWtkOU77tshzzjyoc/zVatWgwkG6xzPqVczEevj5rel+VldkCAQsawvdCDNmcmhP4qKBWBeb/8AMGjgYQBuibCVx7EDu7QpV+4tKCG6373w009eS5vmph+914uqUcBxrMEjjMgKZqP7PcIA9nYwnViWxKaGbytzLyeKPMfpkJ9XqZQ/oVrD0B6vrp/CO/twaLNbJuwoDPnkiac1Dg4pHZX+CpdfRtv4BfnrM0+nUUmVPDVN4yPVezyFK1snSWYVId7bhc4RMI3T7IhkdkTH2dw3Eq7/rN8IlTq0tvmfNY9hFeB8PoS+YAfPTr skp-0jl1aa09m86u304iqchi

之后换了服务器想用密钥对登入 只需要把该公钥传到该服务器中的~/.ssh/authorized_keys当中就行


项目分区导航导入外部脚本 ⬅️ | 22-ssh登入 | ➡️ scp传文件基本用法