计划任务 配置 SSH

单次任务

[单次任务]
https://www.jianshu.com/p/066f6aa07898

atd 服务负责管理单次任务

我们使用 at 这个指令来产生所要运行的工作,并将这个工作以文本文件的方式写入 /var/spool/at/ 目录内,该工作便能等待 atd 这个服务的取用与执行了
实际上有两个权限控制文件,规定了哪些用户可以使用,哪些用户不可以使用
规则是这样的:
一行一个用户

首先查看 /etc/at.allow 文件。
假如系统中存在此文件,就只允许在此文件的用户使用 at, 其他都拒绝。
假如没有 /etc/at.allow 文件,就看有没有 /etc/at.deny 文件。
这个文件意义就是,允许所有,拒绝部分。
就是在这个文件中的用户是被拒绝的,不在此文件中的用户是被允许的。

默认CentOS7系统是有一个空的 /etc/at.deny 文件。
意思是允许所有人使用 at 命令的意思

进行单次任务的程序是 at 命令, 管理他的服务是 atd

systemctl restart atd 
systemctl enable atd
systemctl status atd

具体命令操作

[root@study ~]# at [-mldv] TIME
[root@study ~]# at -c 工作号码
选项与参数:
-m  :当 at 的工作完成后,即使没有输出讯息,亦以 email 通知使用者该工作已完成。
-l  :at -l 相当于 `atq` 命令,列出目前系统上面的所有该使用者的 at 调度;
-d  :at -d 相当于 `atrm` 命令 ,可以取消一个在 `at` 调度中的工作;
-v  :可以使用较明显的时间格式列出 at 调度中的工作列表;
-c  :可以列出后面接的该项工作的实际指令内容。

TIME:
时间格式,可以定义出『什么时候要进行 at 這项工作』的时间.
格式有:
HH:MM 如: 04:00
在今日的 HH:MM 进行,若时间已过,则在明天的 HH:MM 进行行此工作。
HH:MM YYYY-MM-DD 如: 04:00 2019-07-28
強制在某年某月的某一天的特殊時刻進行該工作!
HH:MM[am|pm] + number [minutes|hours|days|weeks]
如:
now + 5 minutes

04pm + 3 days
就是說,在某個时间点『再加上几个时间后』才进行。

示例

[root@kvm-docker ~]# at now + 5 minutes
at> echo "hello" > /dev/pts/0
at> <EOT>
job 1 at Sat Jul 27 18:49:00 2019

ctrl + backspace进行删除操作
ctrl + d    退出编辑

查询:
[root@kvm-docker ~]# atq
1   Sat Jul 27 18:49:00 2019 a root

周期性的任务

循环执行的例行性工作调度则是由 cron (crond) 这个系统服务来控制的。
默认情况下,每个用户都可以通过 crontab 管理自己的计划任务。
和 at 一样,有两个文件控制权限:

/etc/cron.allow
/etc/cron.deny

使用

crontab -l    查询任务表
crontab -r    删除任务表
crontab -e     进入编辑任务表
crontab -eu 用户名    给某个用户设定一个任务

关于时间

参考: cat /etc/crontab

代表意义 分钟 小时 日期 月份 周 指令
数字范围 0-59 0-23 1-31 1-12 0-7 命令

周的数字为 0 或 7 时,都代表“星期天”的意思!
总结记忆:
分 时 日 月 星

周的数字为 0 或 7 时,都代表“星期天”的意思!
总结记忆:
分 时 日 月 星

除了数字还有几个个特殊的符号:
就是 *、/ 和 -、, ,

*代表所有的取值范围内的数字

/ 代表每的意思,*/5 表示每5个单位

  • 代表从某个数字到某个数字

, 代表分隔时段的意思,就是 和 的意思

以下举几个例子说明:

每天早上6点:
0 6 * * * command

每两个小时:
0 */2 * * * command

23 点到早上7点之间每两个小时, 并且还有早上8点:

0 23-7/2,8 * * * command

每个月的 4 号的早上11点和每周的周一到周三的早上11点:
0 11 4 * 1-3 command

1月1日早上2点 30 分:
30 2 1 1 * command

注意

1.不要在统一时间段执行多个计划任务

2.将命令的错误输出重定向

*/1 * * * * /bin/echo "hello" 2> /dev/null //2表示错误输出,并放到“回收站”,1的话就表示正确输出

3.周与日月不可同时并存

网络基础配置

配置本机 IP 和主机名
系统网卡的配置文件在 /etc/sysconfig/network-scripts 目录下
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

TYPE=Ethernet   网络类型,不需要编辑
BOOTPROTO=none   获取地址的方式,可选值 none  表示手动配置 , dhcp 表示从  DHCP 服务器自动获取
IPADDR=192.168.1.52    本机的IP 地址
PREFIX=24     子网掩码前缀的方式,24 表示 255.255.255.0
NETMASK =255.255.255.0        子网掩码
GATEWAY=192.168.1.1     网关
DNS1=114.114.114.114    手动配置的 DNS 地址
DEFROUTE=yes           
PEERDNS=no           使用这里设置的  DNS
ONBOOT=yes           是否开机激活这个网卡,假如不激活,重启网络服务也是无效的。

配置好后,需要重启网络服务才能生效
systemctl restart network # 字符界面下

备用的相关网络配置
/etc/resolve.conf


image.png

配置主机名

文件 /etc/hostname

命令行设置主机名

 hostnamectl set-hostname sharkhost
获取主机名
hostname
或者
hostnamectl

配置本机解析主机名

文件路径 /etc/hosts


image.png

配置好自己或者别人的ip 加名字,然后直接ping 那个名字就行

网络基础配置命令

IP


image.png

iproute 软件包 提供 ip 命令

给网卡接口配置 IP 地址,一个网卡可以配置多个 ip
ip addr add 192.168.0.193/24 dev enp0s3
删除一个网卡接口上的一个 IP 地址
ip addr del 192.168.0.193/24 dev enp0s3
查看指定网卡接口上的 IP 地址
ip addr show enp0s3

查看一个 ip 的路由路径

~ ip route get 220.181.111.188

百度的ip 从 本机的 网关IP 本机的设备 到 本机的 ip

220.181.111.188 via 172.16.153.2 dev bond0 src 172.16.153.129
cache

查看本机的路由表

ip route show

default via 10.0.122.1 dev enp0s3 proto static metric 100
默认路由    网关的 ip   本机设备  enp0s3   路由协议  静态的      
10.0.122.0/24 dev enp0s3 proto kernel scope link src 10.0.122.133 metric 100
目标网络号      本机设备  enp0s3    内核转发      源地址是 10.0.122.133
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.193
网卡上有的网络,内核都会自动有一条路由

设置默认路由

添加
ip route add default via 10.0.122.1 dev  enp0s3

删除
ip  route   del  default    via  10.0.122.1   dev  enp0s3

使用 ip 命令的 neigh 选项,你可以查看接入本机所在的局域网的其他设备的MAC地址

~ ip neigh
10.0.122.1 dev enp0s3 lladdr f0:98:38:3f:49:23 STALE
10.0.122.124 dev enp0s3 lladdr 84:2b:2b:1a:8e:80 REACHABLE
10.0.122.143 dev enp0s3 lladdr 28:d2:44:06:46:6f STALE
10.0.122.166 dev enp0s3 lladdr 00:0e:c6:d6:4c:83 REACHABLE

查看本机监听的端口

ss -l 显示本地打开的所有处于 LISTEN 监听状态的端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt
ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接
ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程
ss -s 列出当前socket详细信息
ss -n 监听端口用数字表示

sshd 服务

[sshd服务]
(https://www.jianshu.com/p/85a956108421)
配置文件 /etc/ssh/sshd_config

image.png

加速 SSH 的连接
GSSAPIAuthentication no
image.png

登录的基本操作

以密码认证方式登录到远程服务器(ssh 服务端)

场景1:
ssh 客户端使用 root 用户连接到 ssh 服务端,假设服务端 ip 为 10.0.122.133

先决条件:

服务端有 root 用户
服务端开启了 sshd 服务,默认监听端口 22
客户端有个 ssh 客户端工具

1.首先在 客户端为当前的用户创建密钥对
ssh-keygen
此时,当前用户的家目录的 .ssh 目录下就会有密钥对
id_rsa 私钥
id_rsa.pub 公钥
公钥用于非密码认证方式时,传送给对方,作为信任的凭证。
私钥会报存到本地
2.以 服务端的用户 root 连接到 服务端

ssh   root@服务端ip
或者
ssh   root@服务端主机名

这里服务端的主机名必须可以被客户端主机正确解析
假如第一次连接会得到一个提示。
大致的意思是,要不要信任 ssh 服务端的公钥。信任输入 yes。
此时,客户端会把 服务端的 公钥存放在当前用户家目录下的 .ssh/known_hosts
文件中,一行一个主机。
3.输入密码即可

端口登陆

image.png

image.png

去掉注释#就可以执行
重启服务

systemctl restart sshd

检查监听端口


image.png

客户端连接

ssh  -p   22  root@10.0.122.102
image.png

以公钥的方式认证方式登录到远程服务器(ssh 服务端)

客户端需要发送自己的公钥给服务端,服务端接收后会保存在用户家目录中的 .ssh/authorized_keys 文件中
ssh-copy-id root@10.0.122.102

ssh-copy-id 服务端用户@服务端ip
登录验证

ssh  root@10.0.122.102

scp 传输文件

scp 是基于 ssh 协议的,可以实现客户端和服务端的文件传输

拷贝客户端到服务端

下面是把客户端的当前目录下的文件 local_file.txt 传输到服务端的 /tmp/ 目录下,文件名不变

scp   local_file.txt    root@10.0.122.133:/tmp/

假如指定端口

scp  -P 2222   local_file.txt    root@10.0.122.133:/tmp/

拷贝服务端文件到客户端

下面的命令是把服务端的文件 /tmp/local_file.txt 传输到客户端的当前操作命令的目录下

scp  root@10.0.122.133:/tmp/local_file.txt   .

假如指定端口

scp   -P  2222  root@10.0.122.133:/tmp/local_file.txt   .

常用配置参数

1\.  SSH Server 的设置,包含使用的 port 啦,以及使用的密碼演算方式
Port 22
# SSH 默认监听 22 這個port,也可以使用多個port,即重複使用 port 這個設定項目!
# 例如想要開放 sshd 在 22 與 443 ,則多加一行內容為:『 Port 443 』
# 然後重新啟動 sshd 這樣就好了!不過,不建議修改 port number 啦!

Protocol 2
# 選擇的 SSH 協定版本,可以是 1 也可以是 2 ,CentOS 5.x 預設是僅支援 V2。
# 如果想要支援舊版 V1 ,就得要使用『 Protocol 2,1 』才行。

ListenAddress 0.0.0.0
# 監聽的主機介面卡!舉個例子來說,如果你有兩個 IP,分別是 192.168.1.100 及 192.168.100.254,假設你只想要讓 192.168.1.100 可以監聽 sshd ,那就這樣寫:
# 『 ListenAddress 192.168.1.100 』預設值是監聽所有介面的 SSH 要求

PidFile /var/run/sshd.pid
# 可以放置 SSHD 這個 PID 的檔案!上述為預設值

LoginGraceTime 2m
# 當使用者連上 SSH server 之後,會出現輸入密碼的畫面,在該畫面中,
# 在多久時間內沒有成功連上 SSH server 就強迫斷線!若無單位則預設時間為秒!

Compression delayed
# 指定何時開始使用壓縮資料模式進行傳輸。有 yes, no 與登入後才將資料壓縮 (delayed)

2\. 說明主機的 Private Key 放置的檔案,預設使用下面的檔案即可!
HostKey /etc/ssh/ssh_host_key        # SSH version 1 使用的私鑰
HostKey /etc/ssh/ssh_host_rsa_key    # SSH version 2 使用的 RSA 私鑰
HostKey /etc/ssh/ssh_host_dsa_key    # SSH version 2 使用的 DSA 私鑰
# 還記得我們在主機的 SSH 連線流程裡面談到的,這裡就是 Host Key ~

3\. 關於登錄檔的訊息資料放置與 daemon 的名稱!
SyslogFacility AUTHPRIV
# 當有人使用 SSH 登入系統的時候,SSH 會記錄資訊,這個資訊要記錄在什麼 daemon name
# 底下?預設是以 AUTH 來設定的,即是 /var/log/secure 裡面!什麼?忘記了!
# 回到 [Linux 基礎](http://linux.vbird.org/linux_basic/)去翻一下。其他可用的 daemon name 為:
DAEMON,USER,AUTH, LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,

LogLevel INFO
# 登錄記錄的等級!嘿嘿!任何訊息!同樣的,忘記了就回去參考!

4\. 安全設定項目!極重要!
4.1 登入設定部分
PermitRootLogin yes
# 是否允許 root 登入!預設是允許的,但是建議設定成 no!

StrictModes yes
# 是否讓 sshd 去檢查使用者家目錄或相關檔案的權限資料,
# 這是為了擔心使用者將某些重要檔案的權限設錯,可能會導致一些問題所致。
# 例如使用者的 ~.ssh/ 權限設錯時,某些特殊情況下會不許用戶登入

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
# 是否允許用戶自行使用成對的金鑰系統進行登入行為,僅針對 version 2。
# 至於自製的公鑰資料就放置於使用者家目錄下的 .ssh/authorized_keys 內

PasswordAuthentication yes
# 密碼驗證當然是需要的!所以這裡寫 yes 囉!

PermitEmptyPasswords no
# 若上面那一項如果設定為 yes 的話,這一項就最好設定為 no ,
# 這個項目在是否允許以空的密碼登入!當然不許!

4.2 認證部分
RhostsAuthentication no
# 本機系統不使用 .rhosts,因為僅使用 .rhosts太不安全了,所以這裡一定要設定為 no

IgnoreRhosts yes
# 是否取消使用 ~/.ssh/.rhosts 來做為認證!當然是!

RhostsRSAAuthentication no #
# 這個選項是專門給 version 1 用的,使用 rhosts 檔案在 /etc/hosts.equiv
# 配合 RSA 演算方式來進行認證!不要使用啊!

HostbasedAuthentication no
# 這個項目與上面的項目類似,不過是給 version 2 使用的!

IgnoreUserKnownHosts no
# 是否忽略家目錄內的 ~/.ssh/known_hosts 這個檔案所記錄的主機內容?
# 當然不要忽略,所以這裡就是 no 啦!

ChallengeResponseAuthentication no
# 允許任何的密碼認證!所以,任何 login.conf 規定的認證方式,均可適用!
# 但目前我們比較喜歡使用 PAM 模組幫忙管理認證,因此這個選項可以設定為 no 喔!

UsePAM yes
# 利用 PAM 管理使用者認證有很多好處,可以記錄與管理。
# 所以這裡我們建議你使用 UsePAM 且 ChallengeResponseAuthentication 設定為 no 

4.3 與 Kerberos 有關的參數設定!因為我們沒有 Kerberos 主機,所以底下不用設定!
KerberosAuthentication no
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes
KerberosTgtPassing no

4.4 底下是有關在 X-Window 底下使用的相關設定!
X11Forwarding yes
#X11DisplayOffset 10
# X11UseLocalhost yes
# 比較重要的是 X11Forwarding 項目,他可以讓視窗的資料透過 ssh 通道來傳送喔!

4.5 登入後的項目:
PrintMotd yes
# 登入後是否顯示出一些資訊呢?例如上次登入的時間、地點等等,預設是 yes
# 亦即是列印出 /etc/motd 這個檔案的內容。但是,如果為了安全,可以考慮改為 no !

PrintLastLog yes
# 顯示上次登入的資訊!可以啊!預設也是 yes !

TCPKeepAlive yes
# 當達成連線後,伺服器會一直傳送 TCP 封包給用戶端藉以判斷對方式否一直存在連線。
# 不過,如果連線時中間的路由器暫時停止服務幾秒鐘,也會讓連線中斷喔!
# 在這個情況下,任何一端死掉後,SSH可以立刻知道!而不會有僵屍程序的發生!
# 但如果你的網路或路由器常常不穩定,那麼可以設定為 no 的啦!

UsePrivilegeSeparation yes
# 是否使用權限較低的程序來提供使用者操作。我們知道 sshd 啟動在 port 22 ,
# 因此啟動的程序是屬於 root 的身份。那麼當 student 登入後,這個設定值
# 會讓 sshd 產生一個屬於 sutdent 的 sshd 程序來使用,對系統較安全

MaxStartups 10
# 同時允許幾個尚未登入的連線畫面?當我們連上 SSH ,但是尚未輸入密碼時,
# 這個時候就是我們所謂的連線畫面啦!在這個連線畫面中,為了保護主機,
# 所以需要設定最大值,預設最多十個連線畫面,而已經建立連線的不計算在這十個當中

4.6 關於使用者抵擋的設定項目:
DenyUsers *
# 設定受抵擋的使用者名稱,如果是全部的使用者,那就是全部擋吧!
# 若是部分使用者,可以將該帳號填入!例如下列!
DenyUsers test

DenyGroups test
# 與 DenyUsers 相同!僅抵擋幾個群組而已!

5\. 關於 SFTP 服務與其他的設定項目!
Subsystem       sftp    /usr/lib/ssh/sftp-server
UseDNS yes
# 一般來說,為了要判斷用戶端來源是正常合法的,因此會使用 DNS 去反查用戶端的主機名
# 不過如果是在內網互連,這項目設定為 no 会连接建立的速度比較快。

写一个脚本实现免密登陆

auto_keygen (){
    /usr/bin/expect<<EOF

    set timeout 30

    spawn   ssh-keygen

    expect     {

        ".ssh/id_rsa)"       { send    "\n";  exp_continue }
        "Overwrite (y/n)?"   { send    "y\n"; exp_continue }
        "no passphrase):"    { send    "\n";  exp_continue }
        "again:"             { send    "\n";  exp_continue }
    }

EOF
}

# 写个自动免密登录的函数
send_key () {
/usr/bin/expect <<EOF

# 发送公钥给对方服务器
spawn ssh rourou@$ip
expect {
"yes/no" { send "yes\n"; exp_continue }
"password:" { send "${pwds}\n"; exp_continue} }
EOF
}

# 定义一个变量,其值是当前用户的公钥文件
pub_key_file=$HOME/.ssh/id_rsa.pub

# 假如公钥文件不存在,说明需要创建密钥对
#if [ ! -f ${pub_key_file} ];then
#    auto_keygen
#fi

# 循环一个存放 ip 地址的文件,并且把每个 IP地址传递给 函数
for ip in $(cat ./ips.txt)
do
   send_key $ip
done
for pwds in $(cat ./pwd.txt)
do

   send_key $pwds
done
send_key

需要建立 ip.txt 和 pwd.txt 两个文件来记录IP和密码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容