module ietf-ssh-server {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-ssh-server";
prefix "sshs";
import ietf-ssh-common {
prefix sshcom;
revision-date 2017-06-13; // stable grouping definitions
reference
"RFC XXXX: SSH Client and Server Models";
}
import ietf-keystore {
prefix ks;
reference
"RFC YYYY: Keystore Model";
}
organization
"IETF NETCONF (Network Configuration) Working Group";
contact
"WG Web:
WG List:
Author: Kent Watsen
";
description
"This module defines a reusable grouping for a SSH server that
can be used as a basis for specific SSH server instances.
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD
License set forth in Section 4.c of the IETF Trust's
Legal Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
revision "2017-06-13" {
description
"Initial version";
reference
"RFC XXXX: SSH Client and Server Models";
}
// features
feature ssh-server-transport-params-config {
description
"SSH transport layer parameters are configurable on an SSH
server.";
}
// grouping
grouping ssh-server-grouping {
description
"A reusable grouping for configuring a SSH server without
any consideration for how underlying TCP sessions are
established.";
container host-keys {
description
"The list of host-keys the SSH server will present when
establishing a SSH connection.";
list host-key {
key name;
min-elements 1;
ordered-by user;
description
"An ordered list of host keys the SSH server will use to
construct its ordered list of algorithms, when sending
its SSH_MSG_KEXINIT message, as defined in Section 7.1
of RFC 4253.";
reference
"RFC 4253: The Secure Shell (SSH) Transport Layer Protocol";
leaf name {
type string;
description
"An arbitrary name for this host-key";
}
choice host-key-type {
mandatory true;
description
"The type of host key being specified";
leaf public-key {
type leafref {
path "/ks:keystore/ks:keys/ks:key/ks:name";
}
description
"The public key is actually identified by the name of
its cooresponding private-key in the keystore.";
}
leaf certificate {
if-feature sshcom:ssh-x509-certs;
type leafref {
path "/ks:keystore/ks:keys/ks:key/ks:certificates/"
+ "ks:certificate/ks:name";
}
description
"The name of a certificate in the keystore.";
}
}
}
}
container client-cert-auth {
if-feature sshcom:ssh-x509-certs;
description
"A reference to a list of trusted certificate authority (CA)
certificates and a reference to a list of trusted client
certificates.";
leaf trusted-ca-certs {
type leafref {
path "/ks:keystore/ks:trusted-certificates/ks:name";
}
description
"A reference to a list of certificate authority (CA)
certificates used by the SSH server to authenticate
SSH client certificates.";
}
leaf trusted-client-certs {
type leafref {
path "/ks:keystore/ks:trusted-certificates/ks:name";
}
description
"A reference to a list of client certificates used by
the SSH server to authenticate SSH client certificates.
A clients certificate is authenticated if it is an
exact match to a configured trusted client certificate.";
}
}
container transport-params {
if-feature ssh-server-transport-params-config;
uses sshcom:transport-params-grouping;
description
"Configurable parameters for the SSH transport layer.";
}
} // ssh-server-grouping
}