Linux备忘

Linux备忘,一些遇到的坑

Linux #

npm install -g nrm
nrm ls
nrm use taobao

MacBook 安装brew以及修改镜像

cd "$(brew --repo)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrcsource ~/.zshrc

参考网址:https://www.cnblogs.com/feiquan/p/13267284.html

wsl2安装Ubuntu20.04 LTS版本 #

添加删除命令执行后要重启。 安装wsl_update_x64.msi 要重启。在微软商店安装最新版。 记住在ps中设置Ubuntu20.04默认用户的口令为: ubuntu2004 config –default-user root ubuntu2004 是win10系统中存在的命令。

SSH协议 #

openssh是一个可以用来产生rsa密钥对的命令行工具。需要更新到最新版,以前的安装的太老了。导致使用的时候有错误(chmod 600 命令于此有关)。

  1. 下载最新的openssh产生密钥对
ssh-keygen -t rsa
  1. 密钥对会在/home/Zigzag/.ssh/下,此时需要对id_rsa进行权限变更,可以使用cmder执行如下命令:
chmod 600 /home/Zigzag/.ssh/id_rsa
  1. 把id_rsa.pub字符串拷贝到centos服务器上,使用cmder命令:
scp id_rsa.pub root@123.45.67.8:~/.ssh

会提示输入密码,输入后即可,点击yes,会在本地填入known_hosts,是来与服务器的公钥。等待客户端加密使用。

  1. 登录CentOS服务器,将id_rsa.pub里的文件写入到~/.ssh/authorized_keys里。
cat ./id_rsa.pub >> authorized_keys

然后重启ssh服务

service sshd restart

在VS Code上创建一个config文件:

Host 123.56.82.241
  HostName 123.56.82.241
  User root
  IdentityFile /home/Zigzag/.ssh/id_rsa

SSH是协议,OpenSSH是它的开源实现。linux系统自带,用于主机的服务端。 (1)远程主机收到用户的登录请求,把自己的公钥发给用户。 (2)用户使用这个公钥,将登录密码加密后,发送回来。 (3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。 中间人将伪造的公钥发给用户怎么办?客户端会提示用户主机发过来的公钥指纹,等待用户手动确认。该过程用户端什么都没有。

但是每次都输密码,也太麻烦了。新的办法:

  1. 用户将自己的公钥储存在远程主机上。
  2. 用户执行登录请求。
  3. 远程主机会向用户发送一段随机字符串。
  4. 用户用自己的私钥加密后,再发回来。
  5. 远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

思考:如果主机的登录口令变了,SSH public key的方式登录是否还凑效? 用户端怎么产生公钥和把公钥放到主机上?

  1. 用户使用ssh-keygen命令产生公私钥匙对,一般会在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。
  2. 使用ssh-copy-id user@host将公钥传送到远程主机host上面。
  3. 检查远程主机的/etc/ssh/sshd_config这个文件:
   RSAAuthentication yes
   PubkeyAuthentication yes
   AuthorizedKeysFile .ssh/authorized_keys
  1. 重启服务service ssh restart

思考:本地是否可以有多个公私钥对?主机端是如何管理多个公钥的? 远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。 https://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

密码管理问题 #

金属学会服务器提示强制密码修改,但是修改完总是自动断掉。后来让从阿里云后台修改了密码,一切稳定。 登录后,我修改了变更策略,不让它过期。

cat /etc/login.defs:

PASS_MAX_DAYS 90 #9999此处设置过期时间
PASS_MIN_LEN 12
PASS_MIN_DAYS 7
PASS_WARN_AGE 30
UMASK 077

2020.4.20再次出现该问题,原因:修改了 /etc/login.defs下参数时,会立即生效,但是它只对修改后创建的用户生效。 解决办法,使用指令:

chage -M 20000 root // 将root帐户的有效期设置为2000天后
chage -l root // 查看是否生效

https://www.cnblogs.com/kevingrace/p/9670160.html 但报错,无法写入:failure while writing changes to /etc/shadow 原因: 金属学会的安全防控软件保护了该文件,防止被写。

2020.4.25 jar后缀的文件无法上传。怀疑在阿里云后台修改密码后,以前设置安全过滤策略不再生效了。需要重新添加白名单。