首页 > 其他分享 >密钥登录服务器

密钥登录服务器

时间:2024-03-20 21:46:03浏览次数:31  
标签:文件 登录 -- authorized rsa keys 密钥 服务器 ssh

密钥登录服务器

目的:在我们使用cmd登录服务器的时候每次都要输一遍ip, port, key,未来方便使用,我们尝试使用密钥登录,无需每次都输入密码。

方法:

首先登录到服务器。

创建 .ssh 目录(如果已有根目录下已有 .ssh 目录则跳过)。

mkdir -p ~/.ssh
chmod 700 ~/.ssh

创建authorized_keys文件(如果已有则跳过)。

touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

chmod 用于更改权限。

创建密钥,在Terminal中输入

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

意思是生成一个rsa类型的ssh密钥,然后将公钥添加到authorized_keys中,具有相应私钥的用户就能通过ssh访问服务器。输入后一路回车,最后会在你的根目录下的.ssh文件夹中生成一组ssh密钥。你可以重命名方便记忆,也可使用默认的。

id_rsa : 私钥

id_rsa.pub : 公钥

最后生成密钥,如图所示。

私钥下载到本地的 C:\Users\xxx\.ssh目录。Windows 下通常密钥都放在该文件夹下,便于管理,也可以放在自己记得的其他目录下。

在 Windows 本地的 cmd 使用私钥进行连接,即可无需密码登录成功。

ssh username@server_address -p port -i private_key_address

private_key_address 就是你在本地保存私钥的文件路径

使用脚本快捷登录

每次输入一长串指令略微耗时,使用脚本登录更快。桌面新建一个txt文件,文件内容为:

@echo off
ssh [email protected] -p xxx -i C:\Users\xxx\.ssh\id_rsa

保存并退出重命名文件为login_server.bat,下次就可以直接双击脚本文件快速登录了。

BUG

  1. 在使用私钥登录时仍然提示你需要输入密码

    解决方法:

    chmod go-w ~
    chmod 644 ~/.ssh/authorized_keys
    

    关键是第二行命令。但是网上也有人使用600就可以运行。原因:ssh tunneling requests may require that file to have 644 specifically. I've always connected ok with 600 with ssh keys with basic terminal connection to my server. But for fancier applications, port-forwarding, ProxyCommand, etc. you may need group or world read permissions on the file, or the remote file... or ... as needed.

    参考链接:https://stackoverflow.com/questions/6377009/adding-a-public-key-to-ssh-authorized-keys-does-not-log-me-in-automatically

Supplementary

Linux命令解释

~

# 波浪号表示当前用户的主目录,例如~/.ssh 就表示 /home/xxx/.ssh
~

touch

touch 命令用于修改文件或者目录的时间属性(包括存取和修改时间)。若文件不存在则系统会建立一个新的文件。

touch [ -acfm][ -d<date & time>][ -r<reference file or dir>][ -t<date & time>][--help][--version][file or dir]

a--改变档案的读取时间记录

c--假如目的档案不存在则不会建立新的档案,与--no-create的效果一样

f--不使用,为了与其他unix系统的相容性而保留

m--改变档案的修改时间记录

d--设定时间与日期,可以使用各种不同的格式

r--使用参考档的时间记录,与--file效果一样

t--设定档案的时间记录,格式与date指令相同

--no-create 不会建立新的档案

--help 列出指令格式

--version 列出版本信息

ls -l 命令可以显示档案的时间记录

ls -l
例子
$ ls -l id_rsa		
-rw-------. 1  1679 3月  20 16:13 id_rsa
$ touch id_rsa		# 修改文件时间属性为当前系统时间
$ ls -l id_rsa
-rw-------. 1  1679 3月  20 17:10 id_rsa
$ touch test		# 创建一个名为test的文件
$ ls
authorized_keys  id_rsa  id_rsa.pub  test

mkdir

mkdir 命令即 make directory ,用于创建目录。用法:

mkdir [-p] dir_name

-p : 确保目录名称存在,不存在就新建一个。如果不加-p且原本目录就不存在则产生错误。

cat

cat 命令即 concatenate,用于连接文件并打印到标准输出设备上。用法:

cat [-AbeEnstTuv] [--help][--version] fileName

-n or --number : 由1开始对所有输出的行数编号

-b or --number-noblank : 和-n相似只是不对空白行编号

-s or --squeeze-blank : 当遇到有两行以上的空白行就代换为一行空白行

-v or --show-nonprinting : 使用^和 M- 符号,除了LFD和TAB外

-E or --show-ends : 在每一行结束处显示$

-T or --show-tabs : 将TAB字符显示为^l

-A or -- show-all : 等价于 -vET

-e : 等价于 -vE

-t : 等价于 -vT

例子
# 把testfile1的文档内容加上行号后输入到testfile2这个文档中
cat -n testfile1 > testfile2

# 清空test.txt内容
cat /dev/null > /etc/test.txt

chmod

chmod 命令即 change mode,用于空值用户对文件的权限。

Linux/Unix 的文件调用权限分为三级:文件所有者Owner,用户组Group,其他用户Other Users

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人。a表示这三者都是。

mv

mv 命令即 move file ,用来为文件或目录改名,或将文件或目录移入其他位置。语法如下

mv [options] source dest
mv [options] source... directory

-b : 当目标文件或目录存在时,在执行覆盖前会为其创建一个备份。

-i : 如果指定移动的源目录或文件与目标的目录或文件同名时,则会先询问是否覆盖旧文件,输入y表示直接覆盖,输入n表示取消该操作

-f : 如果指定移动的源目录或文件与目标目录或文件同名,不会询问直接覆盖。

-n : 不要覆盖任何已存在的文件或目录

-u : 当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

mv old_filename new_filename

使用mv命令重命名文件可能会覆盖同名的目标文件,谨慎操作。

如果目标目录中已有同名文件,则会重命名失败

mv命令同样适用于移动文件,所以在重命名时,请确保文件仍然在相同的文件系统中,否则将执行移动操作。

authorized_keys

authorized_keys文件用于存储允许通过SSH访问特定用户账户的公钥。当用户尝试通过SSH连接到服务器时,服务器会使用此文件中的公钥验证用户身份,如果公钥匹配用户将被允许访问,有助于提高安全性。其文件通常位于用户的主目录下的.ssh子目录中,其作用范围仅限于其所属的用户账户。

某些情况下,authorized_keys文件可能会存放在其他目录,如/root/.ssh/,这通常是原文这些目录属于特定的用户或系统管理员,需要允许其他用户或服务访问。用户可以在任何地方创建authorized_keys文件,但为了保持良好的组织和安全实践,建议将其放在用户的.ssh目录中。如果你在其他目录创建 authorized_keys 文件,你需要确保 SSH 配置文件(通常是 /etc/ssh/sshd_config)中的 AuthorizedKeysFile 指令指向了正确的文件路径。

known_hosts & known_hosts.old

know_hostsknow_hosts.old是SSH客户端中的文件,用于存储已知主机的公钥信息。

  • know_hosts : 该文件包含了用户曾经连结过的远程主机的公钥信息,当用户首次连接一个远程主机时,SSH客户端将会在该主机的公钥保存在know_hosts文件中,当下次再次连接该主机时,客户端会验证主机的公钥是否与之前保持一致,以防止中间人攻击。如果主机的公钥发生变化,客户端会发出警告,以提醒用户进行确认。
  • know_hosts.old : 当SSH客户端检测到known_hosts文件发生了变化(比如主机公钥发生了更改)时,它会将原始的known_hosts文件备份为known_hosts.old。这样,您可以在需要时恢复到旧的已知主机配置。

标签:文件,登录,--,authorized,rsa,keys,密钥,服务器,ssh
From: https://www.cnblogs.com/benbenlzw/p/18086152

相关文章

  • VScode 配置私钥免密登录
    VScode配置私钥免密登录配置公钥私钥进行免密登录在前文已经提及。在完成上述配置后,我们希望在VScode中配置,毕竟主要的开发环境还是在VScode上且连接到远程服务器会经常遇到网络不稳定需要重新输入密码登录的情况,所以更加凸显了配置私钥的必要性。前提条件本地主机中已有配置......
  • web服务器性能评估和监视
         ......
  • Ubuntu 22.04 开启root账户ssh登录
    1.设置root账户密码sudopasswdroot按照提示输入密码及二次确认:至此已经可以本地登录root账号了。 2.开启root账户远程ssh登录sudosed-i's/#PermitRootLoginprohibit-password/PermitRootLoginyes/'/etc/ssh/sshd_configsudosystemctlrestartssh ......
  • nfs服务器搭建和遇到的问题
    安装nfs服务:sudoapt-getinstallnfs-kernel-serverrpcbind nfs配置文件添加:sudovi/etc/exports添加:/home/xxx/linux/nfs*(rw,sync,no_root_squash) 重启NFS服务,使用命令如下:sudo/etc/init.d/nfs-kernel-serverrestart 遇到的问题参考博客:htt......
  • 如何在云服务器上设置固定时间执行任务
    目的最近写了一个获取当地天气然后发送邮件的js文件,然后需要手动node执行,刚好为了博客买了一个腾讯云服务器,想着放云服务器上,然后,每天自动执行发送给好友们实现首先在你的服务器上安装符合系统的node版本,默认路径应该是user/bin/node然后将你的文件夹上传到服务器上,腾讯云的......
  • JWT令牌-登录认证
    1.JWT令牌组成Header(头),记录令牌类型和签名算法等PayLoad(载荷),携带自定义的信息Signature(签名),对头部和载荷进行加密计算得来用于登录认证承载业务数据,减少后续请求查询数据库的次数防篡改,保证信息的合法性和有效性2.使用引入java-jwt坐标调用API生成或验证......
  • 1、戴尔R630本地服务器搭建Linux系统软件硬件环境配置
    目录1.1、服务器配置1.1.1、选择服务器配置方案1.1.2、服务器硬件配置1.1.3、服务器配置检测1.2、网络配置1.2.1、外网配置1.2.2、内网配置1.3、Linux系统Centos镜像下载......
  • nfs服务器搭建
    nfs服务器搭建服务端1安装NFS服务rpcbind&&nfs-utilsyuminstall-ynfs-utilsyuminstall-yrpcbind2启动服务和设置开启启动systemctlstartrpcbind#先启动rpc服务//systemctlenablerpcbind#设置开机启动startnfs-server#启动nfs//enablenfs-server#设置开机启动sy......
  • Win11专业工作站版系统密钥
    Windows11专业工作站版是Windows11专业版的加强版本,专为满足高性能工作负载的需求而设计。它在专业版的基础上增加了以下功能:更高的硬件支持:支持多达4个CPU和6TB内存,支持最新的服务器级处理器和图形卡。增强的存储性能:支持ReFS文件系统、RDMA和NVDIMM等......
  • Eclipse未正常关闭tomcat服务器导致的端口占用错误
    1.问题Severalports(8005,8080,8009)requiredbyCookiearealreadyinuse.Theservermayalreadyberunninginanotherprocess,orasystemprocessmaybeusingtheport.Tostartthisserveryouwillneedtostoptheotherprocessorchangetheportn......