diff --git a/README.md b/README.md
index e31e9fde..2cf9eb05 100644
--- a/README.md
+++ b/README.md
@@ -240,6 +240,7 @@ option.
| ` --sfdisk` | `sfdisk` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/sfdisk) |
| ` --shadow` | `/etc/shadow` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/shadow) |
| ` --ss` | `ss` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ss) |
+| ` --sshd-conf` | sshd config file and `sshd -T` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/sshd_conf) |
| ` --stat` | `stat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/stat) |
| ` --stat-s` | `stat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/stat_s) |
| ` --sysctl` | `sysctl` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/sysctl) |
diff --git a/completions/jc_bash_completion.sh b/completions/jc_bash_completion.sh
index 180705f8..c39360e2 100644
--- a/completions/jc_bash_completion.sh
+++ b/completions/jc_bash_completion.sh
@@ -3,8 +3,8 @@ _jc()
local cur prev words cword jc_commands jc_parsers jc_options \
jc_about_options jc_about_mod_options jc_help_options jc_special_options
- jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 udevadm ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo)
- jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --datetime-iso --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pci-ids --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
+ jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss sshd stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 udevadm ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo)
+ jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --datetime-iso --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pci-ids --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --sshd-conf --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
jc_options=(--force-color -C --debug -d --monochrome -m --meta-out -M --pretty -p --quiet -q --raw -r --unbuffer -u --yaml-out -y)
jc_about_options=(--about -a)
jc_about_mod_options=(--pretty -p --yaml-out -y --monochrome -m --force-color -C)
diff --git a/completions/jc_zsh_completion.sh b/completions/jc_zsh_completion.sh
index 9e5d12c7..d2ac8da2 100644
--- a/completions/jc_zsh_completion.sh
+++ b/completions/jc_zsh_completion.sh
@@ -9,7 +9,7 @@ _jc() {
jc_help_options jc_help_options_describe \
jc_special_options jc_special_options_describe
- jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 udevadm ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo)
+ jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lspci lsusb md5 md5sum mdadm mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss sshd stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 udevadm ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo)
jc_commands_describe=(
'acpi:run "acpi" command with magic syntax.'
'airport:run "airport" command with magic syntax.'
@@ -72,6 +72,7 @@ _jc() {
'sha512sum:run "sha512sum" command with magic syntax.'
'shasum:run "shasum" command with magic syntax.'
'ss:run "ss" command with magic syntax.'
+ 'sshd:run "sshd" command with magic syntax.'
'stat:run "stat" command with magic syntax.'
'sum:run "sum" command with magic syntax.'
'sysctl:run "sysctl" command with magic syntax.'
@@ -97,7 +98,7 @@ _jc() {
'xrandr:run "xrandr" command with magic syntax.'
'zipinfo:run "zipinfo" command with magic syntax.'
)
- jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --datetime-iso --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pci-ids --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
+ jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --datetime-iso --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lspci --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pci-ids --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --sshd-conf --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --udevadm --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo)
jc_parsers_describe=(
'--acpi:`acpi` command parser'
'--airport:`airport -I` command parser'
@@ -234,6 +235,7 @@ _jc() {
'--sfdisk:`sfdisk` command parser'
'--shadow:`/etc/shadow` file parser'
'--ss:`ss` command parser'
+ '--sshd-conf:sshd config file and `sshd -T` command parser'
'--stat:`stat` command parser'
'--stat-s:`stat` command streaming parser'
'--sysctl:`sysctl` command parser'
diff --git a/docs/parsers/sshd_conf.md b/docs/parsers/sshd_conf.md
new file mode 100644
index 00000000..e4137fee
--- /dev/null
+++ b/docs/parsers/sshd_conf.md
@@ -0,0 +1,504 @@
+[Home](https://kellyjonbrazil.github.io/jc/)
+
+
+# jc.parsers.sshd\_conf
+
+jc - JSON Convert sshd configuration file and `sshd -T` command output parser
+
+This parser will work with `sshd` configuration files or the output of
+`sshd -T`. Any `Match` blocks in the `sshd` configuration file will be
+ignored.
+
+Usage (cli):
+
+ $ sshd -T | jc --sshd-conf
+
+or
+
+ $ jc sshd -T
+
+or
+
+ $ cat sshd_conf | jc --sshd-conf
+
+Usage (module):
+
+ import jc
+ result = jc.parse('sshd_conf', sshd_conf_output)
+
+Schema:
+
+ {
+ "acceptenv": [
+ string
+ ],
+ "addressfamily": string,
+ "allowagentforwarding": string,
+ "allowstreamlocalforwarding": string,
+ "allowtcpforwarding": string,
+ "authenticationmethods": string,
+ "authorizedkeyscommand": string,
+ "authorizedkeyscommanduser": string,
+ "authorizedkeysfile": [
+ string
+ ],
+ "authorizedprincipalscommand": string,
+ "authorizedprincipalscommanduser": string,
+ "authorizedprincipalsfile": string,
+ "banner": string,
+ "casignaturealgorithms": [
+ string
+ ],
+ "chrootdirectory": string,
+ "ciphers": [
+ string
+ ],
+ "ciphers_strategy": string,
+ "clientalivecountmax": integer,
+ "clientaliveinterval": integer,
+ "compression": string,
+ "disableforwarding": string,
+ "exposeauthinfo": string,
+ "fingerprinthash": string,
+ "forcecommand": string,
+ "gatewayports": string,
+ "gssapiauthentication": string,
+ "gssapicleanupcredentials": string,
+ "gssapikexalgorithms": [
+ string
+ ],
+ "gssapikeyexchange": string,
+ "gssapistorecredentialsonrekey": string,
+ "gssapistrictacceptorcheck": string,
+ "hostbasedacceptedalgorithms": [
+ string
+ ],
+ "hostbasedauthentication": string,
+ "hostbasedusesnamefrompacketonly": string,
+ "hostkeyagent": string,
+ "hostkeyalgorithms": [
+ string
+ ],
+ "hostkey": [
+ string
+ ],
+ "ignorerhosts": string,
+ "ignoreuserknownhosts": string,
+ "ipqos": [
+ string
+ ],
+ "kbdinteractiveauthentication": string,
+ "kerberosauthentication": string,
+ "kerberosorlocalpasswd": string,
+ "kerberosticketcleanup": sttring,
+ "kexalgorithms": [
+ string
+ ],
+ "listenaddress": [
+ string
+ ],
+ "logingracetime": integer,
+ "loglevel": string,
+ "macs": [
+ string
+ ],
+ "macs_strategy": string,
+ "maxauthtries": integer,
+ "maxsessions": integer,
+ "maxstartups": integer,
+ "maxstartups_rate": integer,
+ "maxstartups_full": integer,
+ "modulifile": string,
+ "passwordauthentication": string,
+ "permitemptypasswords": string,
+ "permitlisten": [
+ string
+ ],
+ "permitopen": [
+ string
+ ],
+ "permitrootlogin": string,
+ "permittty": string,
+ "permittunnel": string,
+ "permituserenvironment": string,
+ "permituserrc": string,
+ "persourcemaxstartups": string,
+ "persourcenetblocksize": string,
+ "pidfile": string,
+ "port": [
+ integer
+ ],
+ "printlastlog": string,
+ "printmotd": string,
+ "pubkeyacceptedalgorithms": [
+ string
+ ],
+ "pubkeyauthentication": string,
+ "pubkeyauthoptions": string,
+ "rekeylimit": integer,
+ "rekeylimit_time": integer,
+ "revokedkeys": string,
+ "securitykeyprovider": string,
+ "streamlocalbindmask": string,
+ "streamlocalbindunlink": string,
+ "strictmodes": string,
+ "subsystem": string,
+ "subsystem_command": string
+ "syslogfacility": string,
+ "tcpkeepalive": string,
+ "trustedusercakeys": string,
+ "usedns": string,
+ "usepam": string,
+ "versionaddendum": string,
+ "x11displayoffset": integer,
+ "x11forwarding": string,
+ "x11uselocalhost": string,
+ "xauthlocation": string
+ }
+
+Examples:
+
+ $ sshd -T | jc --sshd_conf -p
+ {
+ "acceptenv": [
+ "LANG",
+ "LC_*"
+ ],
+ "addressfamily": "any",
+ "allowagentforwarding": "yes",
+ "allowstreamlocalforwarding": "yes",
+ "allowtcpforwarding": "yes",
+ "authenticationmethods": "any",
+ "authorizedkeyscommand": "none",
+ "authorizedkeyscommanduser": "none",
+ "authorizedkeysfile": [
+ ".ssh/authorized_keys",
+ ".ssh/authorized_keys2"
+ ],
+ "authorizedprincipalscommand": "none",
+ "authorizedprincipalscommanduser": "none",
+ "authorizedprincipalsfile": "none",
+ "banner": "none",
+ "casignaturealgorithms": [
+ "ssh-ed25519",
+ "ecdsa-sha2-nistp256",
+ "ecdsa-sha2-nistp384",
+ "ecdsa-sha2-nistp521",
+ "sk-ssh-ed25519@openssh.com",
+ "sk-ecdsa-sha2-nistp256@openssh.com",
+ "rsa-sha2-512",
+ "rsa-sha2-256"
+ ],
+ "chrootdirectory": "none",
+ "ciphers": [
+ "chacha20-poly1305@openssh.com",
+ "aes128-ctr",
+ "aes192-ctr",
+ "aes256-ctr",
+ "aes128-gcm@openssh.com",
+ "aes256-gcm@openssh.com"
+ ],
+ "ciphers_strategy": "+",
+ "clientalivecountmax": 3,
+ "clientaliveinterval": 0,
+ "compression": "yes",
+ "disableforwarding": "no",
+ "exposeauthinfo": "no",
+ "fingerprinthash": "SHA256",
+ "forcecommand": "none",
+ "gatewayports": "no",
+ "gssapiauthentication": "no",
+ "gssapicleanupcredentials": "yes",
+ "gssapikexalgorithms": [
+ "gss-group14-sha256-",
+ "gss-group16-sha512-",
+ "gss-nistp256-sha256-",
+ "gss-curve25519-sha256-",
+ "gss-group14-sha1-",
+ "gss-gex-sha1-"
+ ],
+ "gssapikeyexchange": "no",
+ "gssapistorecredentialsonrekey": "no",
+ "gssapistrictacceptorcheck": "yes",
+ "hostbasedacceptedalgorithms": [
+ "ssh-ed25519-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp384-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp521-cert-v01@openssh.com",
+ "sk-ssh-ed25519-cert-v01@openssh.com",
+ "sk-ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "rsa-sha2-512-cert-v01@openssh.com",
+ "rsa-sha2-256-cert-v01@openssh.com",
+ "ssh-ed25519",
+ "ecdsa-sha2-nistp256",
+ "ecdsa-sha2-nistp384",
+ "ecdsa-sha2-nistp521",
+ "sk-ssh-ed25519@openssh.com",
+ "sk-ecdsa-sha2-nistp256@openssh.com",
+ "rsa-sha2-512",
+ "rsa-sha2-256"
+ ],
+ "hostbasedauthentication": "no",
+ "hostbasedusesnamefrompacketonly": "no",
+ "hostkeyagent": "none",
+ "hostkeyalgorithms": [
+ "ssh-ed25519-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp384-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp521-cert-v01@openssh.com",
+ "sk-ssh-ed25519-cert-v01@openssh.com",
+ "sk-ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "rsa-sha2-512-cert-v01@openssh.com",
+ "rsa-sha2-256-cert-v01@openssh.com",
+ "ssh-ed25519",
+ "ecdsa-sha2-nistp256",
+ "ecdsa-sha2-nistp384",
+ "ecdsa-sha2-nistp521",
+ "sk-ssh-ed25519@openssh.com",
+ "sk-ecdsa-sha2-nistp256@openssh.com",
+ "rsa-sha2-512",
+ "rsa-sha2-256"
+ ],
+ "hostkey": [
+ "/etc/ssh/ssh_host_ecdsa_key",
+ "/etc/ssh/ssh_host_ed25519_key",
+ "/etc/ssh/ssh_host_rsa_key"
+ ],
+ "ignorerhosts": "yes",
+ "ignoreuserknownhosts": "no",
+ "ipqos": [
+ "lowdelay",
+ "throughput"
+ ],
+ "kbdinteractiveauthentication": "no",
+ "kerberosauthentication": "no",
+ "kerberosorlocalpasswd": "yes",
+ "kerberosticketcleanup": "yes",
+ "kexalgorithms": [
+ "sntrup761x25519-sha512@openssh.com",
+ "curve25519-sha256",
+ "curve25519-sha256@libssh.org",
+ "ecdh-sha2-nistp256",
+ "ecdh-sha2-nistp384",
+ "ecdh-sha2-nistp521",
+ "diffie-hellman-group-exchange-sha256",
+ "diffie-hellman-group16-sha512",
+ "diffie-hellman-group18-sha512",
+ "diffie-hellman-group14-sha256"
+ ],
+ "listenaddress": [
+ "0.0.0.0:22",
+ "[::]:22"
+ ],
+ "logingracetime": 120,
+ "loglevel": "INFO",
+ "macs": [
+ "umac-64-etm@openssh.com",
+ "umac-128-etm@openssh.com",
+ "hmac-sha2-256-etm@openssh.com",
+ "hmac-sha2-512-etm@openssh.com",
+ "hmac-sha1-etm@openssh.com",
+ "umac-64@openssh.com",
+ "umac-128@openssh.com",
+ "hmac-sha2-256",
+ "hmac-sha2-512",
+ "hmac-sha1"
+ ],
+ "macs_strategy": "^",
+ "maxauthtries": 6,
+ "maxsessions": 10,
+ "maxstartups": 10,
+ "modulifile": "/etc/ssh/moduli",
+ "passwordauthentication": "yes",
+ "permitemptypasswords": "no",
+ "permitlisten": [
+ "any"
+ ],
+ "permitopen": [
+ "any"
+ ],
+ "permitrootlogin": "without-password",
+ "permittty": "yes",
+ "permittunnel": "no",
+ "permituserenvironment": "no",
+ "permituserrc": "yes",
+ "persourcemaxstartups": "none",
+ "persourcenetblocksize": "32:128",
+ "pidfile": "/run/sshd.pid",
+ "port": [
+ 22
+ ],
+ "printlastlog": "yes",
+ "printmotd": "no",
+ "pubkeyacceptedalgorithms": [
+ "ssh-ed25519-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp384-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp521-cert-v01@openssh.com",
+ "sk-ssh-ed25519-cert-v01@openssh.com",
+ "sk-ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "rsa-sha2-512-cert-v01@openssh.com",
+ "rsa-sha2-256-cert-v01@openssh.com",
+ "ssh-ed25519",
+ "ecdsa-sha2-nistp256",
+ "ecdsa-sha2-nistp384",
+ "ecdsa-sha2-nistp521",
+ "sk-ssh-ed25519@openssh.com",
+ "sk-ecdsa-sha2-nistp256@openssh.com",
+ "rsa-sha2-512",
+ "rsa-sha2-256"
+ ],
+ "pubkeyauthentication": "yes",
+ "pubkeyauthoptions": "none",
+ "rekeylimit": 0,
+ "revokedkeys": "none",
+ "securitykeyprovider": "internal",
+ "streamlocalbindmask": "0177",
+ "streamlocalbindunlink": "no",
+ "strictmodes": "yes",
+ "subsystem": "sftp",
+ "syslogfacility": "AUTH",
+ "tcpkeepalive": "yes",
+ "trustedusercakeys": "none",
+ "usedns": "no",
+ "usepam": "yes",
+ "versionaddendum": "none",
+ "x11displayoffset": 10,
+ "x11forwarding": "yes",
+ "x11uselocalhost": "yes",
+ "xauthlocation": "/usr/bin/xauth",
+ "maxstartups_rate": 30,
+ "maxstartups_full": 100,
+ "rekeylimit_time": 0,
+ "subsystem_command": "/usr/lib/openssh/sftp-server"
+ }
+
+ $ sshd -T | jc --sshd_conf -p -r
+ {
+ "acceptenv": [
+ "LANG",
+ "LC_*"
+ ],
+ "addressfamily": "any",
+ "allowagentforwarding": "yes",
+ "allowstreamlocalforwarding": "yes",
+ "allowtcpforwarding": "yes",
+ "authenticationmethods": "any",
+ "authorizedkeyscommand": "none",
+ "authorizedkeyscommanduser": "none",
+ "authorizedkeysfile": ".ssh/authorized_keys .ssh/authorized_keys2",
+ "authorizedprincipalscommand": "none",
+ "authorizedprincipalscommanduser": "none",
+ "authorizedprincipalsfile": "none",
+ "banner": "none",
+ "casignaturealgorithms": "ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-s...",
+ "chrootdirectory": "none",
+ "ciphers": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,...",
+ "ciphers_strategy": "+",
+ "clientalivecountmax": "3",
+ "clientaliveinterval": "0",
+ "compression": "yes",
+ "disableforwarding": "no",
+ "exposeauthinfo": "no",
+ "fingerprinthash": "SHA256",
+ "forcecommand": "none",
+ "gatewayports": "no",
+ "gssapiauthentication": "no",
+ "gssapicleanupcredentials": "yes",
+ "gssapikexalgorithms": "gss-group14-sha256-,gss-group16-sha512-,...",
+ "gssapikeyexchange": "no",
+ "gssapistorecredentialsonrekey": "no",
+ "gssapistrictacceptorcheck": "yes",
+ "hostbasedacceptedalgorithms": "ssh-ed25519-cert-v01@openssh.co...",
+ "hostbasedauthentication": "no",
+ "hostbasedusesnamefrompacketonly": "no",
+ "hostkeyagent": "none",
+ "hostkeyalgorithms": "ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2...",
+ "hostkey": [
+ "/etc/ssh/ssh_host_ecdsa_key",
+ "/etc/ssh/ssh_host_ed25519_key",
+ "/etc/ssh/ssh_host_rsa_key"
+ ],
+ "ignorerhosts": "yes",
+ "ignoreuserknownhosts": "no",
+ "ipqos": "lowdelay throughput",
+ "kbdinteractiveauthentication": "no",
+ "kerberosauthentication": "no",
+ "kerberosorlocalpasswd": "yes",
+ "kerberosticketcleanup": "yes",
+ "kexalgorithms": "sntrup761x25519-sha512@openssh.com,curve25519...",
+ "listenaddress": [
+ "0.0.0.0:22",
+ "[::]:22"
+ ],
+ "logingracetime": "120",
+ "loglevel": "INFO",
+ "macs": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac...",
+ "macs_strategy": "^",
+ "maxauthtries": "6",
+ "maxsessions": "10",
+ "maxstartups": "10:30:100",
+ "modulifile": "/etc/ssh/moduli",
+ "passwordauthentication": "yes",
+ "permitemptypasswords": "no",
+ "permitlisten": "any",
+ "permitopen": "any",
+ "permitrootlogin": "without-password",
+ "permittty": "yes",
+ "permittunnel": "no",
+ "permituserenvironment": "no",
+ "permituserrc": "yes",
+ "persourcemaxstartups": "none",
+ "persourcenetblocksize": "32:128",
+ "pidfile": "/run/sshd.pid",
+ "port": [
+ "22"
+ ],
+ "printlastlog": "yes",
+ "printmotd": "no",
+ "pubkeyacceptedalgorithms": "ssh-ed25519-cert-v01@openssh.com,...",
+ "pubkeyauthentication": "yes",
+ "pubkeyauthoptions": "none",
+ "rekeylimit": "0 0",
+ "revokedkeys": "none",
+ "securitykeyprovider": "internal",
+ "streamlocalbindmask": "0177",
+ "streamlocalbindunlink": "no",
+ "strictmodes": "yes",
+ "subsystem": "sftp /usr/lib/openssh/sftp-server",
+ "syslogfacility": "AUTH",
+ "tcpkeepalive": "yes",
+ "trustedusercakeys": "none",
+ "usedns": "no",
+ "usepam": "yes",
+ "versionaddendum": "none",
+ "x11displayoffset": "10",
+ "x11forwarding": "yes",
+ "x11uselocalhost": "yes",
+ "xauthlocation": "/usr/bin/xauth"
+ }
+
+
+
+### parse
+
+```python
+def parse(data: str, raw: bool = False, quiet: bool = False) -> JSONDictType
+```
+
+Main text parsing function
+
+Parameters:
+
+ data: (string) text data to parse
+ raw: (boolean) unprocessed output if True
+ quiet: (boolean) suppress warning messages if True
+
+Returns:
+
+ Dictionary. Raw or processed structured data.
+
+### Parser Information
+Compatibility: linux, darwin, freebsd
+
+Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com)
diff --git a/jc/parsers/sshd_conf.py b/jc/parsers/sshd_conf.py
index cef985ff..a4f56b15 100644
--- a/jc/parsers/sshd_conf.py
+++ b/jc/parsers/sshd_conf.py
@@ -1,6 +1,8 @@
"""jc - JSON Convert sshd configuration file and `sshd -T` command output parser
-<>
+This parser will work with `sshd` configuration files or the output of
+`sshd -T`. Any `Match` blocks in the `sshd` configuration file will be
+ignored.
Usage (cli):
@@ -21,21 +23,455 @@ Usage (module):
Schema:
- [
- {
- "sshd_conf": string,
- "bar": boolean,
- "baz": integer
- }
- ]
+ {
+ "acceptenv": [
+ string
+ ],
+ "addressfamily": string,
+ "allowagentforwarding": string,
+ "allowstreamlocalforwarding": string,
+ "allowtcpforwarding": string,
+ "authenticationmethods": string,
+ "authorizedkeyscommand": string,
+ "authorizedkeyscommanduser": string,
+ "authorizedkeysfile": [
+ string
+ ],
+ "authorizedprincipalscommand": string,
+ "authorizedprincipalscommanduser": string,
+ "authorizedprincipalsfile": string,
+ "banner": string,
+ "casignaturealgorithms": [
+ string
+ ],
+ "chrootdirectory": string,
+ "ciphers": [
+ string
+ ],
+ "ciphers_strategy": string,
+ "clientalivecountmax": integer,
+ "clientaliveinterval": integer,
+ "compression": string,
+ "disableforwarding": string,
+ "exposeauthinfo": string,
+ "fingerprinthash": string,
+ "forcecommand": string,
+ "gatewayports": string,
+ "gssapiauthentication": string,
+ "gssapicleanupcredentials": string,
+ "gssapikexalgorithms": [
+ string
+ ],
+ "gssapikeyexchange": string,
+ "gssapistorecredentialsonrekey": string,
+ "gssapistrictacceptorcheck": string,
+ "hostbasedacceptedalgorithms": [
+ string
+ ],
+ "hostbasedauthentication": string,
+ "hostbasedusesnamefrompacketonly": string,
+ "hostkeyagent": string,
+ "hostkeyalgorithms": [
+ string
+ ],
+ "hostkey": [
+ string
+ ],
+ "ignorerhosts": string,
+ "ignoreuserknownhosts": string,
+ "ipqos": [
+ string
+ ],
+ "kbdinteractiveauthentication": string,
+ "kerberosauthentication": string,
+ "kerberosorlocalpasswd": string,
+ "kerberosticketcleanup": sttring,
+ "kexalgorithms": [
+ string
+ ],
+ "listenaddress": [
+ string
+ ],
+ "logingracetime": integer,
+ "loglevel": string,
+ "macs": [
+ string
+ ],
+ "macs_strategy": string,
+ "maxauthtries": integer,
+ "maxsessions": integer,
+ "maxstartups": integer,
+ "maxstartups_rate": integer,
+ "maxstartups_full": integer,
+ "modulifile": string,
+ "passwordauthentication": string,
+ "permitemptypasswords": string,
+ "permitlisten": [
+ string
+ ],
+ "permitopen": [
+ string
+ ],
+ "permitrootlogin": string,
+ "permittty": string,
+ "permittunnel": string,
+ "permituserenvironment": string,
+ "permituserrc": string,
+ "persourcemaxstartups": string,
+ "persourcenetblocksize": string,
+ "pidfile": string,
+ "port": [
+ integer
+ ],
+ "printlastlog": string,
+ "printmotd": string,
+ "pubkeyacceptedalgorithms": [
+ string
+ ],
+ "pubkeyauthentication": string,
+ "pubkeyauthoptions": string,
+ "rekeylimit": integer,
+ "rekeylimit_time": integer,
+ "revokedkeys": string,
+ "securitykeyprovider": string,
+ "streamlocalbindmask": string,
+ "streamlocalbindunlink": string,
+ "strictmodes": string,
+ "subsystem": string,
+ "subsystem_command": string
+ "syslogfacility": string,
+ "tcpkeepalive": string,
+ "trustedusercakeys": string,
+ "usedns": string,
+ "usepam": string,
+ "versionaddendum": string,
+ "x11displayoffset": integer,
+ "x11forwarding": string,
+ "x11uselocalhost": string,
+ "xauthlocation": string
+ }
Examples:
- $ sshd_conf | jc --sshd_conf -p
- []
+ $ sshd -T | jc --sshd_conf -p
+ {
+ "acceptenv": [
+ "LANG",
+ "LC_*"
+ ],
+ "addressfamily": "any",
+ "allowagentforwarding": "yes",
+ "allowstreamlocalforwarding": "yes",
+ "allowtcpforwarding": "yes",
+ "authenticationmethods": "any",
+ "authorizedkeyscommand": "none",
+ "authorizedkeyscommanduser": "none",
+ "authorizedkeysfile": [
+ ".ssh/authorized_keys",
+ ".ssh/authorized_keys2"
+ ],
+ "authorizedprincipalscommand": "none",
+ "authorizedprincipalscommanduser": "none",
+ "authorizedprincipalsfile": "none",
+ "banner": "none",
+ "casignaturealgorithms": [
+ "ssh-ed25519",
+ "ecdsa-sha2-nistp256",
+ "ecdsa-sha2-nistp384",
+ "ecdsa-sha2-nistp521",
+ "sk-ssh-ed25519@openssh.com",
+ "sk-ecdsa-sha2-nistp256@openssh.com",
+ "rsa-sha2-512",
+ "rsa-sha2-256"
+ ],
+ "chrootdirectory": "none",
+ "ciphers": [
+ "chacha20-poly1305@openssh.com",
+ "aes128-ctr",
+ "aes192-ctr",
+ "aes256-ctr",
+ "aes128-gcm@openssh.com",
+ "aes256-gcm@openssh.com"
+ ],
+ "ciphers_strategy": "+",
+ "clientalivecountmax": 3,
+ "clientaliveinterval": 0,
+ "compression": "yes",
+ "disableforwarding": "no",
+ "exposeauthinfo": "no",
+ "fingerprinthash": "SHA256",
+ "forcecommand": "none",
+ "gatewayports": "no",
+ "gssapiauthentication": "no",
+ "gssapicleanupcredentials": "yes",
+ "gssapikexalgorithms": [
+ "gss-group14-sha256-",
+ "gss-group16-sha512-",
+ "gss-nistp256-sha256-",
+ "gss-curve25519-sha256-",
+ "gss-group14-sha1-",
+ "gss-gex-sha1-"
+ ],
+ "gssapikeyexchange": "no",
+ "gssapistorecredentialsonrekey": "no",
+ "gssapistrictacceptorcheck": "yes",
+ "hostbasedacceptedalgorithms": [
+ "ssh-ed25519-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp384-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp521-cert-v01@openssh.com",
+ "sk-ssh-ed25519-cert-v01@openssh.com",
+ "sk-ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "rsa-sha2-512-cert-v01@openssh.com",
+ "rsa-sha2-256-cert-v01@openssh.com",
+ "ssh-ed25519",
+ "ecdsa-sha2-nistp256",
+ "ecdsa-sha2-nistp384",
+ "ecdsa-sha2-nistp521",
+ "sk-ssh-ed25519@openssh.com",
+ "sk-ecdsa-sha2-nistp256@openssh.com",
+ "rsa-sha2-512",
+ "rsa-sha2-256"
+ ],
+ "hostbasedauthentication": "no",
+ "hostbasedusesnamefrompacketonly": "no",
+ "hostkeyagent": "none",
+ "hostkeyalgorithms": [
+ "ssh-ed25519-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp384-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp521-cert-v01@openssh.com",
+ "sk-ssh-ed25519-cert-v01@openssh.com",
+ "sk-ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "rsa-sha2-512-cert-v01@openssh.com",
+ "rsa-sha2-256-cert-v01@openssh.com",
+ "ssh-ed25519",
+ "ecdsa-sha2-nistp256",
+ "ecdsa-sha2-nistp384",
+ "ecdsa-sha2-nistp521",
+ "sk-ssh-ed25519@openssh.com",
+ "sk-ecdsa-sha2-nistp256@openssh.com",
+ "rsa-sha2-512",
+ "rsa-sha2-256"
+ ],
+ "hostkey": [
+ "/etc/ssh/ssh_host_ecdsa_key",
+ "/etc/ssh/ssh_host_ed25519_key",
+ "/etc/ssh/ssh_host_rsa_key"
+ ],
+ "ignorerhosts": "yes",
+ "ignoreuserknownhosts": "no",
+ "ipqos": [
+ "lowdelay",
+ "throughput"
+ ],
+ "kbdinteractiveauthentication": "no",
+ "kerberosauthentication": "no",
+ "kerberosorlocalpasswd": "yes",
+ "kerberosticketcleanup": "yes",
+ "kexalgorithms": [
+ "sntrup761x25519-sha512@openssh.com",
+ "curve25519-sha256",
+ "curve25519-sha256@libssh.org",
+ "ecdh-sha2-nistp256",
+ "ecdh-sha2-nistp384",
+ "ecdh-sha2-nistp521",
+ "diffie-hellman-group-exchange-sha256",
+ "diffie-hellman-group16-sha512",
+ "diffie-hellman-group18-sha512",
+ "diffie-hellman-group14-sha256"
+ ],
+ "listenaddress": [
+ "0.0.0.0:22",
+ "[::]:22"
+ ],
+ "logingracetime": 120,
+ "loglevel": "INFO",
+ "macs": [
+ "umac-64-etm@openssh.com",
+ "umac-128-etm@openssh.com",
+ "hmac-sha2-256-etm@openssh.com",
+ "hmac-sha2-512-etm@openssh.com",
+ "hmac-sha1-etm@openssh.com",
+ "umac-64@openssh.com",
+ "umac-128@openssh.com",
+ "hmac-sha2-256",
+ "hmac-sha2-512",
+ "hmac-sha1"
+ ],
+ "macs_strategy": "^",
+ "maxauthtries": 6,
+ "maxsessions": 10,
+ "maxstartups": 10,
+ "modulifile": "/etc/ssh/moduli",
+ "passwordauthentication": "yes",
+ "permitemptypasswords": "no",
+ "permitlisten": [
+ "any"
+ ],
+ "permitopen": [
+ "any"
+ ],
+ "permitrootlogin": "without-password",
+ "permittty": "yes",
+ "permittunnel": "no",
+ "permituserenvironment": "no",
+ "permituserrc": "yes",
+ "persourcemaxstartups": "none",
+ "persourcenetblocksize": "32:128",
+ "pidfile": "/run/sshd.pid",
+ "port": [
+ 22
+ ],
+ "printlastlog": "yes",
+ "printmotd": "no",
+ "pubkeyacceptedalgorithms": [
+ "ssh-ed25519-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp384-cert-v01@openssh.com",
+ "ecdsa-sha2-nistp521-cert-v01@openssh.com",
+ "sk-ssh-ed25519-cert-v01@openssh.com",
+ "sk-ecdsa-sha2-nistp256-cert-v01@openssh.com",
+ "rsa-sha2-512-cert-v01@openssh.com",
+ "rsa-sha2-256-cert-v01@openssh.com",
+ "ssh-ed25519",
+ "ecdsa-sha2-nistp256",
+ "ecdsa-sha2-nistp384",
+ "ecdsa-sha2-nistp521",
+ "sk-ssh-ed25519@openssh.com",
+ "sk-ecdsa-sha2-nistp256@openssh.com",
+ "rsa-sha2-512",
+ "rsa-sha2-256"
+ ],
+ "pubkeyauthentication": "yes",
+ "pubkeyauthoptions": "none",
+ "rekeylimit": 0,
+ "revokedkeys": "none",
+ "securitykeyprovider": "internal",
+ "streamlocalbindmask": "0177",
+ "streamlocalbindunlink": "no",
+ "strictmodes": "yes",
+ "subsystem": "sftp",
+ "syslogfacility": "AUTH",
+ "tcpkeepalive": "yes",
+ "trustedusercakeys": "none",
+ "usedns": "no",
+ "usepam": "yes",
+ "versionaddendum": "none",
+ "x11displayoffset": 10,
+ "x11forwarding": "yes",
+ "x11uselocalhost": "yes",
+ "xauthlocation": "/usr/bin/xauth",
+ "maxstartups_rate": 30,
+ "maxstartups_full": 100,
+ "rekeylimit_time": 0,
+ "subsystem_command": "/usr/lib/openssh/sftp-server"
+ }
- $ sshd_conf | jc --sshd_conf -p -r
- []
+ $ sshd -T | jc --sshd_conf -p -r
+ {
+ "acceptenv": [
+ "LANG",
+ "LC_*"
+ ],
+ "addressfamily": "any",
+ "allowagentforwarding": "yes",
+ "allowstreamlocalforwarding": "yes",
+ "allowtcpforwarding": "yes",
+ "authenticationmethods": "any",
+ "authorizedkeyscommand": "none",
+ "authorizedkeyscommanduser": "none",
+ "authorizedkeysfile": ".ssh/authorized_keys .ssh/authorized_keys2",
+ "authorizedprincipalscommand": "none",
+ "authorizedprincipalscommanduser": "none",
+ "authorizedprincipalsfile": "none",
+ "banner": "none",
+ "casignaturealgorithms": "ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-s...",
+ "chrootdirectory": "none",
+ "ciphers": "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,...",
+ "ciphers_strategy": "+",
+ "clientalivecountmax": "3",
+ "clientaliveinterval": "0",
+ "compression": "yes",
+ "disableforwarding": "no",
+ "exposeauthinfo": "no",
+ "fingerprinthash": "SHA256",
+ "forcecommand": "none",
+ "gatewayports": "no",
+ "gssapiauthentication": "no",
+ "gssapicleanupcredentials": "yes",
+ "gssapikexalgorithms": "gss-group14-sha256-,gss-group16-sha512-,...",
+ "gssapikeyexchange": "no",
+ "gssapistorecredentialsonrekey": "no",
+ "gssapistrictacceptorcheck": "yes",
+ "hostbasedacceptedalgorithms": "ssh-ed25519-cert-v01@openssh.co...",
+ "hostbasedauthentication": "no",
+ "hostbasedusesnamefrompacketonly": "no",
+ "hostkeyagent": "none",
+ "hostkeyalgorithms": "ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2...",
+ "hostkey": [
+ "/etc/ssh/ssh_host_ecdsa_key",
+ "/etc/ssh/ssh_host_ed25519_key",
+ "/etc/ssh/ssh_host_rsa_key"
+ ],
+ "ignorerhosts": "yes",
+ "ignoreuserknownhosts": "no",
+ "ipqos": "lowdelay throughput",
+ "kbdinteractiveauthentication": "no",
+ "kerberosauthentication": "no",
+ "kerberosorlocalpasswd": "yes",
+ "kerberosticketcleanup": "yes",
+ "kexalgorithms": "sntrup761x25519-sha512@openssh.com,curve25519...",
+ "listenaddress": [
+ "0.0.0.0:22",
+ "[::]:22"
+ ],
+ "logingracetime": "120",
+ "loglevel": "INFO",
+ "macs": "umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac...",
+ "macs_strategy": "^",
+ "maxauthtries": "6",
+ "maxsessions": "10",
+ "maxstartups": "10:30:100",
+ "modulifile": "/etc/ssh/moduli",
+ "passwordauthentication": "yes",
+ "permitemptypasswords": "no",
+ "permitlisten": "any",
+ "permitopen": "any",
+ "permitrootlogin": "without-password",
+ "permittty": "yes",
+ "permittunnel": "no",
+ "permituserenvironment": "no",
+ "permituserrc": "yes",
+ "persourcemaxstartups": "none",
+ "persourcenetblocksize": "32:128",
+ "pidfile": "/run/sshd.pid",
+ "port": [
+ "22"
+ ],
+ "printlastlog": "yes",
+ "printmotd": "no",
+ "pubkeyacceptedalgorithms": "ssh-ed25519-cert-v01@openssh.com,...",
+ "pubkeyauthentication": "yes",
+ "pubkeyauthoptions": "none",
+ "rekeylimit": "0 0",
+ "revokedkeys": "none",
+ "securitykeyprovider": "internal",
+ "streamlocalbindmask": "0177",
+ "streamlocalbindunlink": "no",
+ "strictmodes": "yes",
+ "subsystem": "sftp /usr/lib/openssh/sftp-server",
+ "syslogfacility": "AUTH",
+ "tcpkeepalive": "yes",
+ "trustedusercakeys": "none",
+ "usedns": "no",
+ "usepam": "yes",
+ "versionaddendum": "none",
+ "x11displayoffset": "10",
+ "x11forwarding": "yes",
+ "x11uselocalhost": "yes",
+ "xauthlocation": "/usr/bin/xauth"
+ }
"""
from typing import Set, List, Dict
from jc.jc_types import JSONDictType
diff --git a/man/jc.1 b/man/jc.1
index abac7b3c..573c4311 100644
--- a/man/jc.1
+++ b/man/jc.1
@@ -1,4 +1,4 @@
-.TH jc 1 2022-10-28 1.22.2 "JSON Convert"
+.TH jc 1 2022-10-31 1.22.2 "JSON Convert"
.SH NAME
\fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings
.SH SYNOPSIS
@@ -710,6 +710,11 @@ PLIST file parser
\fB--ss\fP
`ss` command parser
+.TP
+.B
+\fB--sshd-conf\fP
+sshd config file and `sshd -T` command parser
+
.TP
.B
\fB--stat\fP